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

lea*_*ner 3 android android-alertdialog

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

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

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

Tri*_*mon 7

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

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);
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以测试对话框是否显示或不使用isShowing()方法的对话框(检查出从类继承的方法android.app.Dialoghttp://developer.android.com/reference/android/app/AlertDialog.html),例如

public void closeDialogs() {
   for (AlertDialog dialog : dialogs)
      if (dialog.isShowing()) dialog.dismiss();
}
Run Code Online (Sandbox Code Playgroud)

或者你可以完成并重新开始你的活动,如Pragnani所说.取决于你的重启按钮在哪里......