使用Xamarin的.Android,我如何重置AlertDialog中选中的项目
本文关键字:AlertDialog 项目 何重置 Xamarin Android 使用 | 更新日期: 2023-09-27 18:13:19
我有一个AlertDialog显示在一个按钮上,允许用户从多个选项中进行选择。当AlertDialog随后重新启动时,选择将被记住。
我正在使用SetMultiChoiceItems方法,并传入一个代表我想要的选择的bool数组,但这似乎被忽略了(注意,我在对话框解除时重置了所选数组)。
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, android/Xamarin正在内部缓存这个
OnCreateDialog在第一次需要构造对话框时被调用,正如您所观察到的,它被缓存。
你需要处理OnPrepareDialog中的元素刷新。
另一个选项是显式地删除对话框,以便每次使用RemoveDialog完成后重新创建对话框。