簡體   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