如何在Android中以编程方式关闭对话框?

42

如何通过代码在Android中关闭对话框,例如通过按钮?

假设我有一个带有“确定”按钮的对话框,并且想通过该按钮关闭它,但我无法做到!

我搜索了一下,没有发现有用的内容,几乎所有内容都是用于关闭AlertDialog而不是Dialog。

5个回答

74

你可以在对话框上调用dismiss方法。


谢谢 :) 那个起作用了!对不起,我的问题有点儿傻 :) 谢谢大家 :) - Amir Hossein Ghasemi
我使用了 .setPositiveButton("ok ", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dismissDialog(DIALOG_Success); } }) 但是当我再次显示对话框时,对话框显示旧消息。我写了 Activity.this.showDialog(DIALOG_Success,arg),你能帮忙吗? - Fatemeh

15

这是一个创建带有2个按钮(确定和取消)的AlertDialog的示例。

当点击取消按钮时,

dialog.dismiss()

将被调用来关闭对话框。

从任何地方外部,你都可以调用

builder.dismiss();

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
            builder.setMessage("Some message.")
                   .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int id) {
                           // do something
                       }
                   })
                   .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int id) {
                           dialog.dismiss();
                       }
                   });

            builder.show();

11
没有像"builder.dismiss();" 这样的方法。 - m.zander
你需要在 builder 上调用 .create() 方法才能访问 dismiss()。首先执行 setNegativeButton(...).create();,然后执行 builder.dismiss(); - karlingen

9
dialog.dismiss();

只有这一行会关闭它。 :-)

在 onClickListener 中实现它。


1
只需要在对话框类内部使用dismiss()方法即可!谢谢Helmisek :) - Amir Hossein Ghasemi
当然可以,只需调用DialogFragment的dismiss()方法即可。 - Karue Benson Karue

7

0

如果您的对话框是一个单独的Activity(例如DialogActivity),除了使用dismiss();选项之外,关闭它的另一种方法是调用:

   finish();

OnClickListener类的onClick()方法内调用此方法。

这将依次调用onPause()onStop()onDestroy()方法,并终止当前活动 - 相当于返回按钮。


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