Xamarin.forms 如何阻止硬件后退按钮并重新登录

Xamarin.forms 如何阻止硬件后退按钮并重新登录,xamarin.forms,Xamarin.forms,我已经为我的应用程序实现了以下导航,它具有登录和注销功能。 如何阻止硬件后退按钮并重新登录。以下是流程: 1) 应用程序启动时,登录页面是主页面 MainPage=新建登录() 2) 成功登录后,用户将被导航到主菜单页面 NavigationPage NP=新建NavigationPage(新建主菜单()) App.current.MainPage=Np 主菜单中的: 1) 如何覆盖iOS和Android的硬件按钮(但iOS在当前的ipad和iphone中没有后退按钮)。 1a)如何检测设备是否

我已经为我的应用程序实现了以下导航,它具有登录和注销功能。 如何阻止硬件后退按钮并重新登录。以下是流程:

1) 应用程序启动时,登录页面是主页面

MainPage=新建登录()

2) 成功登录后,用户将被导航到主菜单页面

NavigationPage NP=新建NavigationPage(新建主菜单())
App.current.MainPage=Np

主菜单中的

1) 如何覆盖iOS和Android的硬件按钮(但iOS在当前的ipad和iphone中没有后退按钮)。

1a)如何检测设备是否为iOS和Android手机?由于iOS没有后退按钮,onBackButtonPressed()会应用于它吗?

1b)在base.OnBackButtonPressed()之前或之后放置return false是否会产生影响?

2) 用户注销

在开始处:登录->主菜单:在主菜单页面中,用户单击注销按钮

 void LogoutButton()
 {
   Navigate.PopModalAsync(new Login());
 }
这是否会导致首次登录后出现问题,主页为App.current.MainPage=Np

现在什么是主页=??当用户单击注销按钮时?

当用户再次登录时会发生什么?我应该使用哪种导航方法返回登录页面


谢谢

首先让我说,一次问多个问题并不真正符合StackOverflow指南。回答您的问题:

1) 如何覆盖iOS和Android(但iOS)的硬件按钮 在当前的ipad和iphone中没有后退按钮)

您覆盖的方法确实停止了硬件返回按钮。但是,它不会停止用户必须返回的所有方法。您可以做的是为您的登录创建一个单独的活动,并用以下内容装饰它:

[Activity(Label = "MyApp",
          Icon = "@drawable/ic_launcher",
          MainLauncher = true,
          NoHistory = true,
          ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation,
          ScreenOrientation = ScreenOrientation.Portrait)]
public class LoginActivity : FormsAppCompatActivity { }
NoHistory=true
部分是有趣的部分。这意味着它不会包含在Android导航堆栈中,因此您不能使用“后退”按钮返回到它

1a)如何检测设备是否为iOS和Android手机?因为iOS没有 后退按钮,onBackButtonPressed()是否适用于它

否。
OnBackButtonPressed
在iOS上不执行任何操作。它不会被称为

2) 用户在开始时注销:登录->主菜单:在主菜单页面中, 用户单击“注销”按钮将导致自第一次登录以来的任何问题 时间登录,现在什么是主页??用户何时单击注销按钮? 当用户再次登录时会发生什么?我应该使用哪种导航方法 用于返回登录页面吗


您可以根据需要调出
主页
。这也将有助于您在返回按钮。在应用程序启动时,您可以检查用户是否已登录。如果他是,则将
Current.MainPage
设置为主菜单页。如果没有,则将其设置为登录页面。用户成功登录后,将Current.MainPage设置为主菜单页。由于您设置了主页,您将获得一个全新的导航堆栈,因此“后退”按钮将不会使应用程序返回登录页面。

10Q并感谢您的帮助。案例(1):登录->成功,转到->主菜单(未执行停止返回Btn代码),当用户按下后退按钮时,不会进入登录页面,而是关闭或退出应用程序。这正常吗?当登录确定时,我使用NavigationPage NP=new NavigationPage(new MainMenu()),mainPage=NP。因此,当用户单击“后退”按钮时,应用程序不知道使用哪个堆栈弹出最后一页。这是正确的吗?是的,这是预期的行为。当没有其他东西可以返回时,应用程序将关闭。登录成功后,您将创建一个新的导航堆栈。这意味着你推到的每一页都可以用后退按钮弹出。但是当你进入主菜单页面时,你不能再弹出任何东西,所以这个应用程序可能会关闭。请考虑把它标记为一个答案,如果它对你有帮助的话。我一定会的。让我做些测试,我会回来的。谢谢你的帮助。我希望这将有助于寻求这一解决办法的其他人。
[Activity(Label = "MyApp",
          Icon = "@drawable/ic_launcher",
          MainLauncher = true,
          NoHistory = true,
          ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation,
          ScreenOrientation = ScreenOrientation.Portrait)]
public class LoginActivity : FormsAppCompatActivity { }