5

我正在使用以下代码显示带有两个按钮的警报对话框。但是,如果在活动暂停时没有取消对话框,则会引发错误。我知道您可以使用 .dismiss 关闭对话框,但这是一个 AlertDialog Builder 而不是对话框。知道怎么做吗?

AlertDialog.Builder alertDialog = new AlertDialog.Builder(MyActivity.this);

                // Setting Dialog Title
                alertDialog.setTitle("Title");

                // Setting Dialog Message
                alertDialog.setMessage("Message");

                // Setting Positive "Yes" Button
                alertDialog.setPositiveButton("YES", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,int which) {
                        //yes
                        dialog.cancel();

                    }
                });

                // Setting Negative "NO" Button
                alertDialog.setNegativeButton("NO", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        //no                
                    dialog.cancel();
                    }
                });

                // Showing Alert Message
                alertDialog.show();
4

1 回答 1

10

显示对话框时可以获得 AlertDialog:

dialog = alertDialog.show(); // show and return the dialog

然后在 onPause 中,您可以关闭 AlertDialog:

@Override
protected void onPause() {
    super.onPause();
    if (dialog != null) {
        dialog.dismiss();
    }
}

该对话框需要定义为实例变量才能工作:

private AlertDialog dialog; // instance variable

顺便说一句,AlertDialog.Builder 是一个构建器,因为您可以像这样使用构建器模式

dialog = AlertDialog.Builder(MyActivity.this)
    .setTitle("Title");
    .setMessage("Message")
[...]
    .show();
于 2013-06-17T02:02:29.907 回答