AlertDialog崩溃了应用程序

时间:2010-06-17 12:44:26

标签: android alertdialog

有人可以向我解释为什么这个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();
            }

        });
    };
};

1 个答案:

答案 0 :(得分:4)

这是一个很大的失败:

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

您正在尝试使用null对象,并且(当然)将抛出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.xml目录中名为res/layout的文件,其中包含对话框布局。