我一直在阅读有关此主题的其他类似帖子,但这些似乎都没有帮助我。我想要做的是在满足要求时显示或解除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,但我的想法已经用完了。
提前致谢
答案 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();
}
}