2013-03-24 19 views
2

我在遊戲中有重新啓動選項。但問題是當我按下重新啓動時,現有活動中可能會有一些打開的alertdialog。Android Alertbox如何在沒有任何引用的情況下關閉所有打開的Alertbox

當我按下重新啓動時,我想關閉所有打開的Alertdialog(如果有的話)。我沒有提及打開alertdialogs(可以是o,1或多於一個)。

有沒有什麼辦法可以在活動中隨時忽略所有打開的alertdialogs,而無需參考它?

回答

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

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

或者你可以完成並重新啓動您的活動爲Pragnani說。取決於你的重啓按鈕在哪裏...

相關問題