满足特定条件时,请关闭AlertDialog

时间:2018-02-20 10:37:15

标签: java android

我一直在阅读有关此主题的其他类似帖子,但这些似乎都没有帮助我。我想要做的是在满足要求时显示或解除AlertDialog。

我的代码如下所示:

openDoorDialog = new AlertDialog.Builder(MainActivity.this)
                    .setTitle(R.string.open_door_title)
                    .setCancelable(false)
                    .setIconAttribute(android.R.attr.alertDialogIcon)
                    .setMessage(R.string.open_door_warning).create();

if(DISMISS_CRITERIA) {
    openDoorDialog.dismiss();
} else if(SHOW_CRITERIA) {
    openDoorDialog.show();            
}

我认为我的问题是,每次构建器都会创建一个新实例,因此dismiss()不会引用最新的Dialog,但我的想法已经用完了。

提前致谢

1 个答案:

答案 0 :(得分:0)

在您的活动中创建一个对话实例。

EG。私人AlertDialog mDialog;

创建两种方法来显示和隐藏它。

E.g

private void showDialog() {
        if (mDialog != null && mDialog.isShowing()) {
            mDialog.dismiss();
        }
        mDialog = new AlertDialog.Builder....
    }

private void hideDialog(){
       if (mDialog != null && mDialog.isShowing()) {
                mDialog.dismiss();
            }
}

<强>更新

它应该是这样的:

AlertDialog openDoorDialog;

private void showDialog(){
if (openDoorDialog != null && openDoorDialog.isShowing()) {
    openDoorDialog.dismiss();
}

openDoorDialog = new AlertDialog.Builder(this)
        .setTitle(R.string.open_door_title)
        .setCancelable(false)
        .setIconAttribute(android.R.attr.alertDialogIcon)
        .setMessage(R.string.open_door_warning).create();
}

private void hideDialog(){
    if (openDoorDialog != null && openDoorDialog.isShowing()) {
        openDoorDialog.dismiss();
    }
}

private void handleLog(String newLog){
     if(newLog.contains(Const.CLOSED_DOOR_MESSAGE)){
         hideDialog();

     }
     else if(openDoorDialog != null && newLog.contains(Const.OPEN_DOOR_MESSAGE) && openDoorDialog_count==0 /*&& status.getPrinting()*/) {
         showDialog();
     }
}