如何检查是否打开对话框?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (61)

我有静态方法,我创建一个对话框 :

public static void showDialog(Context context) {
    AlertDialog.Builder builder = new AlertDialog.Builder(context);
    builder.setTitle("Title");
    builder.setMessage("Message");
    builder.setPositiveButton("ok", new OnClickListener() {
            public void onClick(DialogInterface dialog, int arg1) {
                dialog.dismiss();
            }});
    builder.setCancelable(false);
    builder.create().show();
}

在我的应用程序中可能会有一种情况,可以多次调用方法,但我不想打开2个或更多对话框。如何检查是否打开对话框?

提问于
用户回答回答于

应该将此代码放入你希望支持此功能的每项活动中:

public AlertDialog myAlertDialog;

public void showDialog(Context context) {
        if( myAlertDialog != null && myAlertDialog.isShowing() ) return;

        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setTitle("Title");
        builder.setMessage("Message");
        builder.setPositiveButton("ok", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int arg1) {
                    dialog.dismiss();
                }});
        builder.setCancelable(false);
        myAlertDialog = builder.create();
        myAlertDialog.show();
}
用户回答回答于

重写你的方法返回AlertDialog,将其分配给成员,并在调用此方法之前检查它是否为null或!isShowing()。你也可以使用onCreateDialog。在需要对话管理的活动的基类中实现此方法,然后随时调用showDialog(int id)

所属标签

可能回答问题的人

  • 女淘日记

    杭州吱吱吱科技 · 站长 (已认证)

    1 粉丝1 提问3 回答
  • 朝夕熊博客

    1 粉丝2 提问3 回答
  • gulu丶咕噜

    0 粉丝1 提问2 回答
  • o o

    4 粉丝495 提问2 回答

扫码关注云+社区

领取腾讯云代金券