在适用于xamarin表单

时间:2017-10-23 04:39:39

标签: c# android xamarin.forms

我有一个用户登录的应用程序。现在我希望用户在按下注销按钮后无法返回菜单。

这是我的退出方法

public async void OnLogoutButtonClicked(object sender, EventArgs e)
        {
            App.AuthenticationClient.UserTokenCache.Clear(Constants.ApplicationID);
            await Navigation.PushAsync(new LoginPage());
        }

因此,在单击注销按钮后,它会将用户推送到登录页面。 我可以在登录页面中使用此按钮禁用后退按钮

 protected override bool OnBackButtonPressed()
   {

      return false;
   }

但它让我的应用程序感觉没有响应,相反,我希望当按下后退按钮时,我的应用程序应该关闭应用程序。 我试过这个

     protected override bool OnBackButtonPressed()
       {

          return exit();
          //
          // exit()
       }

但它返回布尔值,我该怎么做才能使它工作?

1 个答案:

答案 0 :(得分:2)

当用户退出时,您通常不想在现有导航堆栈上推送新页面。当前的导航堆栈不再适用,因此应该被丢弃,就像清除UserTokenCache一样。

因此,您的注销方法应该更像:

public async void OnLogoutButtonClicked(object sender, EventArgs e)
{
    App.AuthenticationClient.UserTokenCache.Clear(Constants.ApplicationID);
    Application.Current.MainPage = new LoginPage();
}

基本上,创建新的LoginPage并设置一个新的MainPage,就像应用程序正在启动并首先向用户呈现LoginPage一样。

如果你这样做,那么后退按钮就无法返回菜单,因为整个导航堆栈已经消失。