3

我的游戏中有重启选项。但问题是当我按下重新启动时,现有活动中可能有一些打开的警报对话框。

当我按下重新启动时,我想关闭所有打开的 Alertdialog(如果有)。我对打开的警报对话框没有任何参考(可以是 o、1 或多个)。

有什么方法可以随时关闭活动中所有打开的警报对话框而无需任何参考?

4

1 回答 1

8

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

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.Dialoghttp://developer.android.com/reference/android/app/AlertDialog.html继承的方法),例如

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

或者你可能会像Pragnani所说的那样完成并重新开始你的活动。取决于你的重启按钮在哪里......

于 2013-03-24T17:34:10.627 回答