Android Alert Box如何在没有任何引用的情况下解除所有打开的Alert Box

时间:2013-03-24 17:14:07

标签: android android-alertdialog

我的游戏中有一个重启选项。但问题是,当我按重启时,现有活动中可能会有一些打开的alertdialog。

当我按下重启时,我想解雇所有打开的Alertdialog(如果有的话)。我没有提到打开alertdialogs(可以是o,1或多个)。

有没有什么方法可以随时解除活动中所有打开的警报声音而没有任何参考?

1 个答案:

答案 0 :(得分:6)

首先,您可以将所有对话框分配给成员变量,例如

private Vector<AlertDialog> dialogs = new Vector<AlertDialog>();

@Override
protected Dialog onCreateDialog(int id) {
  switch (id) {
    case DIALOG_ALERT:
      Builder builder = new AlertDialog.Builder(this);
      ...
      AlertDialog dialog = builder.create();
      dialogs.add(dialog);
      dialog.show();
   }
   return super.onCreateDialog(id);
}

之后,您可以使用对话框的isShowing()方法测试对话框是否显示(查看类android.app.Dialog http://developer.android.com/reference/android/app/AlertDialog.html中的继承方法),例如

public void closeDialogs() {
   for (AlertDialog dialog : dialogs)
      if (dialog.isShowing()) dialog.dismiss();
}

或者你可以完成并重新开始你的活动,因为 Pragnani 说。取决于重启按钮的位置......