OnBackButtonPressed()没有第二次被触发

时间:2018-07-09 06:53:20

标签: xamarin xamarin.forms xamarin.android

当我第一次单击特定页面上的后退按钮时,它可以正常运行,但是第二次打开同一页面后,它不起作用(我已经设置了调试器但未调用)。

它显示了我在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/

1 个答案:

答案 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 truefalse根据您的要求。