我有一個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會在內部緩存這些內容。