我已经创建了Xamarin pcl表单项目,并在用户按下注销按钮时要求确认,它在Android和iOS上都工作正常,但同时我作为Windows UWP项目运行弹出窗口出现2次,我不知道发生了什么。请指导我如何解决此问题。
我在项目中使用的代码下面提到了我的代码。
我已经使用了带有 await 和没有 await 关键字的选项,但没有运气。
var resp = await DisplayAlert("","Are you sure want to Logout?","Yes", "No");
if (resp)
{
}
也许用户按下按钮禁食 2 次,我建议你添加一个标志,如下所示:
bool displayFlag = false;
if(!displayFlag)
{
displayFlag = true;
var resp = await DisplayAlert("","Are you sure want to Logout?","Yes", "No");
if(resp)
{
//Logout
}
displayFlag = false;
}
或者,警报消息可能位于另一个任务中(只是成像(,因此也许这会有所帮助:
Device.BeginInvokeOnMainthread( () => async
{
await DisplayAlert("","Are you sure want to Logout?","Yes", "No");
});
您正在通过调用 await DisplayAlert
来执行弹出窗口。通过将其存储到变量中,您只是说要从弹出窗口获取输出(是或否(。第二个弹出窗口是因为您将其添加到 if 条件中。你应该这样做:
Device.BeginInvokeOnMainThread(new Action(async () =>
{
if(await DisplayAlert("", "Are you sure want to Logout?", "Yes", "No"))
{
}
}));
希望对您有所帮助!
我刚刚遇到了这个错误,两个答案都对我不起作用。但是,我设法找到了导致它的原因并修复了它。这是由我的应用程序多次调用 LoadApplication()
方法引起的。一次在 OnLaunched(LaunchActivatedEventArgs eventArgs)
方法中,第二次在OnActivated(IActivatedEventArgs args)
中,同时应用程序正在运行。
因此,如果人们仍然遇到这种情况,请确保这种情况不会发生。
我遇到了同样的问题。
我多次将事件处理程序 (+=( 绑定到控件,因此警报显示 n 次。