Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法解决的错误:尝试调用虚拟方法';android.view.Window$Callback android.view.Window.getCallback()';关于空对象引用_Java_Android_Arrays_Android Studio - Fatal编程技术网

Java 无法解决的错误:尝试调用虚拟方法';android.view.Window$Callback android.view.Window.getCallback()';关于空对象引用

Java 无法解决的错误:尝试调用虚拟方法';android.view.Window$Callback android.view.Window.getCallback()';关于空对象引用,java,android,arrays,android-studio,Java,Android,Arrays,Android Studio,每当我在emulator中打开activityTestme时,它都会遇到RuntimeException。日志已发布在下面: FATAL EXCEPTION: main Process: com.learn.earn.earnlearnapp, PID: 6622 java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.learn.earn.earnlearnapp/com.learn.earn.e

每当我在emulator中打开activity
Testme
时,它都会遇到
RuntimeException
。日志已发布在下面:

FATAL EXCEPTION: main
Process: com.learn.earn.earnlearnapp, PID: 6622
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.learn.earn.earnlearnapp/com.learn.earn.earnlearnapp.Testme}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2679)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference
代码似乎没有任何问题。我花了几个小时试图解决这个问题。如果你能帮我解决这个问题就太好了。我的部分活动代码已附在下面:

    public class Testme extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_testme);
        readQuestions();

    }
    int qnum = 0;
    private List<TopicQuestion> questionsList = new ArrayList<>();
    private TextView txtquestion = findViewById(R.id.txtquestion);
    private Button answer1 = findViewById(R.id.btnans1);
    private Button answer2 = findViewById(R.id.btnans2);
    private Button answer3 = findViewById(R.id.btnans3);
    private Button answer4 = findViewById(R.id.btnans4);
    private boolean correct = false;



    private void readQuestions() {
        InputStream is = getResources().openRawResource(R.raw.questions);
        BufferedReader reader = new BufferedReader(
                new InputStreamReader(is, Charset.forName("UTF-8"))
        );

        String line = "";
        try {
        while (
                (line = reader.readLine()) != null) {
            //Split the data
            String[] tokens = line.split(",");
            //Read the data
            TopicQuestion question = new TopicQuestion();
            question.setTopic(tokens[0]);
            question.setQuestion(tokens[1]);
            question.setAns1(tokens[2]);
            question.setAns2(tokens[3]);
            question.setAns3(tokens[4]);
            question.setAns4(tokens[5]);
            questionsList.add(question);
        }

    }   catch (IOException e) {
            Log.wtf("MyActivity","Error reading question file on line" + line, e);
                e.printStackTrace();
            }
            {

            }
            txtquestion.setText(questionsList.get(qnum).getQuestion());
            answer1.setText(questionsList.get(qnum).getAns1());
            answer2.setText(questionsList.get(qnum).getAns3());
            answer3.setText(questionsList.get(qnum).getAns2());
            answer4.setText(questionsList.get(qnum).getAns4());

        answer1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                correct = (questionsList.get(qnum).getAns1()).equals(answer1.getText().toString());
            }
        });
        answer2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                correct = (questionsList.get(qnum).getAns2()).equals(answer2.getText().toString());
            }
        });
        answer3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                correct = (questionsList.get(qnum).getAns1()).equals(answer3.getText().toString());
            }
        });
        answer4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                correct = (questionsList.get(qnum).getAns1()).equals(answer4.getText().toString());
            }
        });
        if (correct)
        {
            qnum +=1;
            txtquestion.setText(questionsList.get(qnum).getQuestion());
            answer1.setText(questionsList.get(qnum).getAns1());
            answer2.setText(questionsList.get(qnum).getAns3());
            answer3.setText(questionsList.get(qnum).getAns2());
            answer4.setText(questionsList.get(qnum).getAns4());
        }
        else
        {
            txtquestion.setText(questionsList.get(qnum).getQuestion());
            answer1.setText(questionsList.get(qnum).getAns1());
            answer2.setText(questionsList.get(qnum).getAns3());
            answer3.setText(questionsList.get(qnum).getAns2());
            answer4.setText(questionsList.get(qnum).getAns4());
        }
    }

    }
公共类Testme扩展了AppCompative活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_testme);
阅读问题();
}
int qnum=0;
私有列表问题列表=新的ArrayList();
私有文本视图txtquestion=findViewById(R.id.txtquestion);
专用按钮应答1=findViewById(R.id.BT1);
专用按钮应答2=findViewById(R.id.btnans2);
专用按钮应答3=findViewById(R.id.btnans3);
专用按钮应答4=findViewById(R.id.BT4);
私有布尔值正确=错误;
私人问题{
InputStream is=getResources().openRawResource(R.raw.questions);
BufferedReader reader=新的BufferedReader(
新的InputStreamReader(is,Charset.forName(“UTF-8”))
);
字符串行=”;
试一试{
当(
(line=reader.readLine())!=null){
//拆分数据
String[]tokens=line.split(“,”);
//读取数据
主题问题=新主题问题();
问题.setTopic(令牌[0]);
问题.setQuestion(令牌[1]);
问题.setAns1(代币[2]);
问题.setAns2(代币[3]);
问题.setAns3(代币[4]);
问题.setAns4(代币[5]);
问题列表。添加(问题);
}
}捕获(IOE异常){
Log.wtf(“MyActivity”,“读取第行的问题文件时出错”+第行,e);
e、 printStackTrace();
}
{
}
txtquestion.setText(questionsList.get(qnum.getQuestion());
answer1.setText(questionsList.get(qnum.getAns1());
answer2.setText(questionsList.get(qnum.getAns3());
answer3.setText(questionsList.get(qnum.getAns2());
answer4.setText(questionsList.get(qnum.getAns4());
answer1.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
correct=(questionsList.get(qnum.getAns1()).equals(answer1.getText().toString());
}
});
answer2.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
correct=(questionsList.get(qnum.getAns2()).equals(answer2.getText().toString());
}
});
answer3.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
correct=(questionsList.get(qnum.getAns1()).equals(answer3.getText().toString());
}
});
answer4.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
correct=(questionsList.get(qnum.getAns1()).equals(answer4.getText().toString());
}
});
如果(正确)
{
qnum+=1;
txtquestion.setText(questionsList.get(qnum.getQuestion());
answer1.setText(questionsList.get(qnum.getAns1());
answer2.setText(questionsList.get(qnum.getAns3());
answer3.setText(questionsList.get(qnum.getAns2());
answer4.setText(questionsList.get(qnum.getAns4());
}
其他的
{
txtquestion.setText(questionsList.get(qnum.getQuestion());
answer1.setText(questionsList.get(qnum.getAns1());
answer2.setText(questionsList.get(qnum.getAns3());
answer3.setText(questionsList.get(qnum.getAns2());
answer4.setText(questionsList.get(qnum.getAns4());
}
}
}

您必须在
setContentView
之后的
OnCreate
中分配视图的值

在外部声明字段:

private TextView ;
private Button; etc..
将下面的行放入
OnCreate

 txtquestion = findViewById(R.id.txtquestion);
 answer1 = findViewById(R.id.btnans1);
 answer2 = findViewById(R.id.btnans2);
 answer3 = findViewById(R.id.btnans3);
 answer4 = findViewById(R.id.btnans4);

希望有帮助

首先,将所有
findViewById
行移到
onCreate