如何阻止硬件返回按钮并再次重新登录

时间:2017-07-04 07:40:26

标签: xamarin.forms

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

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 = ??当用户点击退出按钮时?

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

由于

1 个答案:

答案 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设置为主菜单页面。由于您设置了主页面,因此您将获得一个全新的导航堆栈,因此后退按钮不会使应用程序返回到登录页面。