从暂停中关闭警报对话框构建器

时间:2013-06-17 01:47:31

标签: android

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

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();

1 个答案:

答案 0 :(得分:7)

显示对话框时可以获取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

BTW AlertDialog.Builder是一个构建器,因为你可以这样使用builder pattern

dialog = AlertDialog.Builder(MyActivity.this)
    .setTitle("Title");
    .setMessage("Message")
[...]
    .show();