当我第一次单击特定页面上的后退按钮时,它可以正常运行,但是第二次打开同一页面后,它不起作用(我已经设置了调试器但未调用)。
它显示了我在page1上写的警报消息。
protected override bool OnBackButtonPressed()
{
Device.BeginInvokeOnMainThread(async () =>
{
var result = await this.DisplayAlert("Alert!", "want to exit?", "Yes", "No");
if (result)
{
System.Diagnostics.Process.GetCurrentProcess().Kill();
}
});
return base.OnBackButtonPressed();
}
在下一页2
protected override bool OnBackButtonPressed()
{
Navigation.RemovePage(this);
return true;
}
当我第二次单击“后退”按钮时,它显示我在Page 1“后退”按钮功能中编写的警报消息
此代码第一次运行良好,而在其余时间都无法运行
如何摆脱它,请帮帮我。
注意,我已经使用了xamarin Android的bottomNavigation栏
https://asyncawait.wordpress.com/2016/06/16/bottom-menu-for-xamarin-forms-android/
答案 0 :(得分:1)
好的,像这样在OnBackButtonPressed()
内实现一个条件。
OnBackButtonPressed()
{
var pagesinstack = Navigation.NavigationStack.Count();
int count = pagesinstack;
Debug.WriteLine("stack history {0}", count.ToString());
if (count <= 1)
{
/* Your exit code here */
Device.BeginInvokeOnMainThread(async () =>
{
var result = await this.DisplayAlert("Alert!", "want to exit?", "Yes", "No");
if (result)
{
System.Diagnostics.Process.GetCurrentProcess().Kill();
}
});
return base.OnBackButtonPressed();
}
else
{
Navigation.RemovePage(this);
return true;
}
}
注意:OnBackButtonPressed()
是一个布尔函数,因此return true
或false
根据您的要求。