首页 > 解决方案 > Android:AlertDialog 中的 NullPointerException

问题描述

我的活动中有以下代码

    View quizView = getLayoutInflater().inflate(R.layout.dialog_quiz_end, null);
    TextView score = quizView.findViewById(R.id.quiz_result);
    score.setText(getString(R.string.quizzfinalResults, correctAnswers, wrongAnswers));

    AlertDialog.Builder dialog = new AlertDialog.Builder(Activity_Quiz.this);
    dialog.setView(quizView)
            .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            })
            .setOnDismissListener(new DialogInterface.OnDismissListener() {
                @Override
                public void onDismiss(DialogInterface dialog) {
                    dialog.dismiss();
                }
            });

    AlertDialog quizDialog = dialog.create();
    quizDialog.show();

这也是 dialog_quiz_end 布局的 XML 它是一个带有 TextView 的简单 ContraintLayout

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">


<TextView
    android:id="@+id/quiz_result"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginStart="20dp"
    android:layout_marginTop="20dp"
    android:layout_marginEnd="20dp"
    android:ems="10"
    android:gravity="center"
    android:textSize="20dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

它很简单,我知道。但由于某种原因,我一直有这个错误。这是日志猫。第 331 行是“quizDialog.show()”。我希望有人能帮助我。

java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.ViewGroup.findViewById(int)' on a null object reference
    at com.android.internal.app.AlertController.setupButtons(AlertController.java:736)
    at com.android.internal.app.AlertController.setupView(AlertController.java:533)
    at com.android.internal.app.AlertController.installContent(AlertController.java:264)
    at android.app.AlertDialog.onCreate(AlertDialog.java:436)
    at android.app.Dialog.dispatchOnCreate(Dialog.java:407)
    at android.app.Dialog.show(Dialog.java:302)
    at com.example.geotrails.UI.Activity_Quiz.endOfQuiz(Activity_Quiz.java:311)
    at com.example.geotrails.UI.Activity_Quiz.access$800(Activity_Quiz.java:39)
    at com.example.geotrails.UI.Activity_Quiz$2$1.run(Activity_Quiz.java:249)
    at android.os.Handler.handleCallback(Handler.java:873)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:6863)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

标签: androidnullpointerexceptiondialogalert

解决方案


推荐阅读