如何以编程方式移除AlertDialog

20
在Android应用程序中,我向用户显示一个没有按钮,只有消息的AlertDialog。如何以编程方式销毁AlertDialog,使其不再可见?我尝试使用cancel()和dismiss(),但它们都不起作用,视图仍然存在。

在Android应用程序中,我向用户显示一个没有按钮,只有消息的AlertDialog。如何以编程方式销毁AlertDialog,使其不再可见?我尝试使用cancel()和dismiss(),但它们都不起作用,视图仍然存在。

AlertDialog.Builder test = new AlertDialog.Builder(context);
test.setTitle("title");
test.setCancelable(true);
test.setMessage("message...");
test.create().show();

然后我尝试了

test.show().cancel()

test.show().dismiss()

但是它没有生效。


请查看此链接:https://dev59.com/52Yq5IYBdhLWcg3wfgnd#14445953 - Mukeshkumar S
3个回答

38

你应该引用AlertDialog本身,而不是建造者。

AlertDialog.Builder test = new AlertDialog.Builder(context);
test.setTitle("title");
test.setCancelable(true);
test.setMessage("message...");
ALertDialog testDialog = test.create();
testDialog.show();  // to show
testDialog.dismiss();  // to dismiss

我喜欢你的回答。它按预期工作!:) 谢谢。 - Ruberandinda Patience

6
AlertDialog.Builder test = new AlertDialog.Builder(context);
...

AlertDialog dialog = test.create().show();

稍后您想要隐藏它:
 dialog.dismiss();

0
将下面的代码添加到你的程序中,当用户点击屏幕外部时,对话框会被自动关闭。
```java alertDialog.setCanceledOnTouchOutside(true); ```
或者,当用户点击设备的返回按钮时,对话框也会被关闭。
alertDialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
    @Override
    public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            alertDialog.dismiss();
            return true;
        }
        return false;
    }
})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接