2014-07-16 32 views
0

我有一個AlertDialog按鈕顯示按鈕,允許用戶從多個選項中進行選擇。當隨後重新啓動AlertDialog時,選擇被記住。我正在使用方法SetMultiChoiceItems和傳遞表示我想要的選擇的布爾數組,但這似乎被忽略(注意我正在重置選定的數組,解除對話框)。使用Xamarin.Android,我如何重置AlertDialog中的選定項目

private AlertDialog OpenSelectMultiplePlayers(List<SelectionViewModel> selections, SelectReason reason) 
{ 
    string[] items = (from p in selections 
         select p.PlayerName).ToArray(); 
    bool[] selected = new bool[selections.Count]; 

    var builder = new AlertDialog.Builder(this); 
    builder.SetTitle(Resource.String.select_players); 
    builder.SetMultiChoiceItems(items, selected, (s, e) => { 
     selected[e.Which] = e.IsChecked; 
    }); 

    builder.SetPositiveButton(Resource.String.alert_dialog_ok, (s, e) => 
    { 
     // TODO: Do something with the selection 
     for (int i = 0; i < selected.Length; i++) { selected[i] = false; } 
    }); 

    builder.SetNegativeButton(Resource.String.alert_dialog_cancel, (s, e) => 
    { 
     for (int i = 0; i < selected.Length; i++) { selected[i] = false; } 
    }); 

    return builder.Create(); 
} 

顯然使用Xamarin,有些代碼看起來奇怪的Android開發者,但我失去了我的翻譯的東西嗎?

編輯: 新信息:看起來後面的ShowDialog調用不會導致任何額外的OnCreateDialog執行。 OnCreateDialog是執行OpenSelectMultiplePlayers的方法。這意味着我甚至沒有機會重新構建AlertDialog,Andoird/Xamarin會在內部緩存這些內容。

回答

2

OnCreateDialog被稱爲第一次需要構建對話框,並且正如您所看到的,它被緩存。

您需要處理中的元素刷新OnPrepareDialog

另一種選擇是明確地刪除對話框,以便每次使用時重新創建對話框。RemoveDialog完成後。

相關問題