2015-06-28 27 views
2

在Xamarin的形式,在的onResume事件處理程序上的應用程序類,它是不是一個NavigationPage,所以你不能做任何導航的onResume。當我的應用程序恢復時,如果它已經睡了超過30分鐘,我希望它回到它的主頁,而不是恢復到它進入睡眠的頁面。我有在的onResume 30分鐘的陷阱,但我不能做導航。任何人都可以提出一種做法嗎?導航到的onResume默認頁面()

+0

你有任何代碼段 –

回答

8

默認情況下,在一個窗體應用程序,要存儲的MainPage這應該是在這種情況下NavigationPage

public class App : Application 
{ 
    public App() 
    { 
     // The root page of your application 
     MainPage = new NavigationPage { 

因此,您可以使用它來獲取Navigation對象。

protected override async void OnResume() 
{ 
    var nav = MainPage.Navigation; 

    // you may want to clear the stack (history) 
    await nav.PopToRootAsync (true); 

    // then open the needed page (I'm guessing a login page) 
    await nav.PushAsync(new LoginPage()); 
} 
+0

很好,謝謝。我沒有意識到我可以訪問MainPage對象。你已經若有所思建議清除堆棧歷史記錄,但是當我嘗試這個,我得到一個語法錯誤:ElementAt的是不是NavigationStack的方法。你真的嘗試過嗎? – Ric

+0

你需要添加'使用System.Linq;'Xamarin Studio並不總是幫助缺少Linq庫,因爲它們可能是擴展方法,但仍然令人討厭;-) –

3

嘗試更新的onResume方法是這樣的:

protected async override void OnResume() 
{ 
    await MainPage.Navigation.PopToRootAsync (true); 
} 
+1

簡單的答案。非常感謝。我會選擇正確的,但Benoit首先到達那裏。 – Ric

+0

它的方式更好,謝謝,我更新的參考答案 –