使用Xamarin MvvmCross-Forms登录页面 - 阻止Android上的后退导航

时间:2016-07-04 09:42:12

标签: xamarin xamarin.android xamarin.forms mvvmcross

我正在尝试为MvvmCross-Forms应用程序实现登录页面。启动应用程序时,如果用户未登录,则应向用户显示登录屏幕,如果是,则将其定向到主页。用户在登录时被定向到主页,并在他们从主页注销时被定向到登录页面。非常标准的东西 - 您对具有身份验证的应用程序的期望。

我使用MvvmCross ViewModel导航实现了这一点,但每个导航都允许用户按下Android标题栏中的“后退”按钮,或使用硬件后退按钮。作为用户,我希望登录后的主页是“根”页面,并且只能通过明确决定退出才能返回登录屏幕。

据我所知,在Xamarin Forms中执行此操作的典型方法是在Droid项目下创建一个自定义页面展示器,该项目拦截对Show()的调用并清除导航到主页的后台堆栈或登录页面(例如Xamarin MvvmCross Android Prevent Back Button returning to previous View的最佳答案)。但是,似乎MvvmCross-Forms故意阻止您实现此功能 - MvxFormsDroidPagePresenter类继承自跨平台MvxFormsPagePresenter而不是特定于Android的MvxAndroidViewPresenter

我可以看到两个选项 - 尝试使用单个ViewModel / View进行登录和主页,或者删除一些MvxAndroidViewPresenter功能并将其放入我自己的自定义Android演示者中。如何在MvvmCross-Forms中以惯用方式实现此行为?

1 个答案:

答案 0 :(得分:2)

方法错了。您要做的是将您的主页设置为root,然后立即执行ModalPush for Login页面,以防用户未登录。当用户登录时,执行ModalPop并返回root,这是主页。

如果用户登录的情况比您正确的位置 - root,即主页。

希望这有帮助。