"不幸的是GeoQuiz已经停止了#34;

时间:2016-05-27 22:01:45

标签: java android

这是我得到的错误

E/AndroidRuntime: FATAL EXCEPTION: main

Process: com.bignerdranch.android.geoquiz, PID: 7499

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.bignerdranch.android.geoquiz/com.bignerdranch.android.geoquiz.QuizActivity}: **java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference**

这是我的代码:

package com.bignerdranch.android.geoquiz;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class QuizActivity extends AppCompatActivity {

    private Button mTrueButton;
    private Button mFalseButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_quiz);

        mTrueButton = (Button) findViewById(R.id.true_button);

        mTrueButton.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                Toast.makeText(QuizActivity.this, R.string.incorrect_toast, Toast.LENGTH_SHORT).show();
            }
        });
        mFalseButton = (Button) findViewById(R.id.false_button);
        mFalseButton.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                Toast.makeText(QuizActivity.this, R.string.correct_toast, Toast.LENGTH_SHORT).show();
            }
        });

    }
}

我不知道为什么我会收到此错误。我以为我很好地分配了对象参考,我检查了标点符号以确保。

这是我的XML代码,如果它有助于按钮和ID。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
   android:gravity="center"
    android:orientation= "vertical"
    tools:context="com.bignerdranch.android.geoquiz.QuizActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/question_text" />
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding = "24dp"
        android:orientation="horizontal">
        <Button
            android:id="@+id/true_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/true_button"/>
        <Button
            android:id="@+id/false_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="false"/>
    </LinearLayout>
</LinearLayout>

好的,所以我想尝试检查值是否为null,我将这两行代码放入检查

System.out.println("mTrueButtonIsNull:" +(mTrueButton==null));
System.out.println("mFalseButtonIsNull:" +(mFalseButton==null));

我回来了,我不知道为什么或我现在必须做什么。

5-27 18:11:10.266 20014-20014/com.bignerdranch.android.geoquiz I/System.out: mTrueButtonIsNull:true
05-27 18:11:10.266 20014-20014/com.bignerdranch.android.geoquiz I/System.out: mFalseButtonIsNull:true

1 个答案:

答案 0 :(得分:0)

您的某个按钮似乎有问题。定义为null

确保true_button布局中包含false_buttonactivity_quiz

如果您的布局文件没有问题,请清理并重新构建您的应用。