1

有人可以向我解释为什么这个 AlertDialog 崩溃了吗?

package com.clicker;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


public class Clicker extends Activity
{
    public int clickerNumber = 0;
    private TextView clickerText;
    private Button clickerButton;
    private Button resetButton;

    // Called when the activity is first created.
    @SuppressWarnings("null")
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // Declare each of the layout objects
        clickerText = (TextView)findViewById(R.id.clickerText);
        clickerButton = (Button)findViewById(R.id.clickerButton);
        resetButton = (Button)findViewById(R.id.resetButton);

        clickerText.setText("0");

        final AlertDialog.Builder resetQuestion = null;
        resetQuestion.setTitle("Reset?");
        resetQuestion.setMessage("Are you sure you want to reset the counter?");

        resetQuestion.setPositiveButton("Yes", new OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {
                    clickerNumber = 0;
                    clickerText.setText("0");
            }

        });

        resetQuestion.setNegativeButton("No", new OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {
                dialog.dismiss();
            } 

        });

        clickerButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                clickerNumber++;
                clickerText.setText(Integer.toString(clickerNumber));
            }
        });

        resetButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                resetQuestion.show();
            }

        });
    };
};
4

1 回答 1

4

这是一个巨大的失败:

final AlertDialog.Builder resetQuestion = null;
resetQuestion.setTitle("Reset?");

您正在尝试使用一个空对象,并且(当然)会抛出一个NullPointerException

这就是我创建对话框的方式(我认为这是最好的方法):

LayoutInflater factory = LayoutInflater.from(this);
final View textEntryView = factory.inflate(R.layout.dialogo_layout, null);
final AlertDialog.Builder resetQuestion = new AlertDialog.Builder(YourActivity.this)
// do whatever you want with the resetQuestion AlertDialog

在这里,表示在包含对话框布局的目录中R.layout.dialogo_layout调用的文件。dialogo_layout.xmlres/layout

于 2010-06-17T12:46:31.660 回答