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

时间:2011-04-14 08:07:49

标签: android

我有静态方法,我在其中创建一个对话框

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个或更多对话框。如何检查是否打开了对话框?感谢...

3 个答案:

答案 0 :(得分:32)

您应该将此代码放在要支持此功能的每个活动中。

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

            AlertDialog alertDialog;
    alertDialog = new AlertDialog.Builder(this).create();
    alertDialog.setTitle(title);
    alertDialog.setMessage(msg);        
    alertDialog.setButton(-3, "Text Parsed", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            // TODO Auto-generated method stub
            dialog.dismiss();
        }
    });

    alertDialog.show();