我有一个用户登录的应用程序。现在我希望用户在按下注销按钮后无法返回菜单。
这是我的退出方法
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()
}
但它返回布尔值,我该怎么做才能使它工作?
答案 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一样。
如果你这样做,那么后退按钮就无法返回菜单,因为整个导航堆栈已经消失。