Android 从onpause中关闭警报对话框生成器

Android 从onpause中关闭警报对话框生成器,android,Android,我使用以下代码显示一个带有两个按钮的警报对话框。但是,如果活动暂停时对话框未退出,则会抛出错误。我知道您可以使用.disclose关闭对话框,但这是AlertDialog Builder而不是对话框。你知道怎么做吗 AlertDialog.Builder alertDialog = new AlertDialog.Builder(MyActivity.this); // Setting Dialog Title alertDial

我使用以下代码显示一个带有两个按钮的警报对话框。但是,如果活动暂停时对话框未退出,则会抛出错误。我知道您可以使用.disclose关闭对话框,但这是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();

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

dialog = alertDialog.show(); // show and return the dialog
然后在onPause中,您可以关闭AlertDialog:

@Override
protected void onPause() {
    super.onPause();
    if (dialog != null) {
        dialog.dismiss();
    }
}
需要将对话框定义为实例变量,才能使其工作:

private-AlertDialog;//实例变量

顺便说一句,AlertDialog.Builder是一个生成器,因为您可以使用类似的:


dialog.cancel呢?我发现这对我不起作用,因为alertDialog.show();返回void而不是预期的AlertDialog。无论如何,谢谢。这个答案正是最初的问题所说的不起作用。AlertDialog并不总是一个选项,因此AlertDialog.Builder是另一个选项;但是,此答案不适用于AlertDialog.Builder。@Rodrigo Mesquita您没有阅读答案。我的答案是,当您从AlertDialog.Builder显示对话框时,您会看到AlertDialog。获得AlertDialog后,可以关闭该对话框。无法关闭AlertDialog.Builder。你提到的链接正是我在回答中描述的。这是公认的答案这一事实可能表明它回答了OPs问题。@EmanuelMoecklin,几天后我再次查看了你和我的答案,我仍然认为这有点混乱,因为你初始化了“对话”对象两次。你在“顺便说一句”下面写的内容对我很有用,但上面的部分确实让我困惑。事实上,这是一个公认的答案,这意味着有些人理解它,但不是每个人都理解。我认为如果你试图简化它,你可以得到更多的选票。我不会两次初始化它。事实上,这是一个被接受的答案与ppl理解它无关,而是与它回答op的问题有关(尽管UPVOUTS可以)。我会在电脑前澄清答案。
dialog = AlertDialog.Builder(MyActivity.this)
    .setTitle("Title");
    .setMessage("Message")
[...]
    .show();