繁体   English   中英

防止用户返回上一个活动

[英]Prevent user from returning to last activity

我正在研究Xamarin.Forms项目,并且在我的PCL中创建了名为“ Login.xaml”的启动页面。 用户必须在此页面上填写其凭据并将其发送到WebAPI。 当API返回“ 1” / true时,它将打开一个名为“ Home.xaml”的新页面。

按下手机上的后退按钮时,如何防止用户返回登录页面? 即:用户登录到第一页,webapi对其进行验证并返回“ 1”,以便打开新页面(“主页”),但是当用户按下“返回”按钮时,它将返回登录屏幕。 在应用程序关闭之前,这应该是不可能的。

当您推送Home.xaml时,可以从导航堆栈中删除登录页面:

await Navigation.PushAsync(new Home());  // or whatever your page is called
Navigation.RemovePage(this);

这样,您的用户进入首页后便无所事事。

为此,您的登录页面必须是NavigationPage 为此,您必须将其与NavigationPage ctor包装在一起:

// this goes into your App.cs where you enter your app:
public App()
{
    MainPage = new NavigationPage(new Login()); // or whatever your login page is called
}

我建议您看一下文档: Xamarin表单简介-导航

对于我来说,调用RemovePage()会给我带来各种各样的问题。

我要做的就是改变我的想法。 如果执行Pop而不是Push ,则实际上是永久删除该页面。 那么,您需要做些什么才能能够执行Pop而不是Push? 首先在当前页面之前插入下一页,然后弹出:

var newRootPage = new NewRootPage();
this.Navigation.InsertPageBefore(newRootPage, this);
await this.Navigation.PopAsync();

注意:为此,您还需要将初始根页面包装在NavigationPage中,就像@germi在回答的最后一部分中说的那样:

// this goes into your App.cs where you enter your app:
public App()
{
    // or whatever your login page is called
    MainPage = new NavigationPage(new Login()); 
}

PS:FWIW, 这是我在F#开源项目中的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM