我已经为我的应用程序实现了以下导航,该应用程序具有登录和注销功能。 如何阻止硬件返回按钮并再次重新登录。以下是流程:
1)登录页面是应用程序启动时的主页
MainPage = new Login();
2)成功登录后,用户将导航到MainMenu页面
NavigationPage NP = new NavigationPage(new MainMenu());
App.current.MainPage = Np;
在MainMenu中:
1)如何覆盖iOS和Android的硬件按钮(但iOS在当前的ipad和iphone中没有后退按钮)。
This is what I got so far to stop back button.
protected override bool OnBackButtonPressed()
{
base.OnBackButtonPressed();
return false
}
1a)如何检测设备是iOS和Android手机?由于iOS没有后退按钮,onBackButtonPressed()是否适用于它?
1b)将在base.OnBackButtonPressed()之前或之后放置返回false,有所作为吗?
2)用户注销
开头:登录 - > MainMenu:在MainMenu页面中,用户单击Logout按钮
void LogoutButton()
{
Navigate.PopModalAsync(new Login());
}
这会导致任何问题,因为第一次登录,MainPage是App.current.MainPage = Np;
现在什么是Mainpage = ??当用户点击退出按钮时?
用户再次登录会发生什么?我应该使用哪种导航方法返回登录页面?
由于
答案 0 :(得分:0)
首先让我说,一次提出多个问题并非根据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)用户在开始时注销:登录 - > MainMenu:在MainMenu页面中, 用户单击“注销”按钮将导致第一个问题 时间登录,现在什么是主页?当用户单击“注销”按钮? 用户再次登录时会发生什么?我应该使用哪种导航方法 用于返回登录页面?
您可以根据需要更换MainPage
。这对后退按钮也有帮助。在应用启动时,您可以检查用户是否已登录。如果是,则将Current.MainPage
设置为主菜单页面。如果没有,则将其设置为登录页面。用户成功登录后,将Current.MainPage设置为主菜单页面。由于您设置了主页面,因此您将获得一个全新的导航堆栈,因此后退按钮不会使应用程序返回到登录页面。