2016-08-30 98 views
0

我有一個Xamarin窗體/棱鏡應用程序,並且我的硬件後退按鈕在初始頁面上沒有任何操作。後退按鈕關閉導航後的應用程序,但不是之前

如果我導航到另一個頁面,它會按預期關閉應用程序。如果我再次導航到初始頁面,它也會關閉應用程序 - 但如果應用程序剛剛啓動,則不會。

有什麼我失蹤了嗎?

class App主要有OnInitialized導航到初始頁面:

protected override void OnInitialized() 
{ 
    NavigationService.NavigateAsync("MyMasterDetail/MyNavigationPage/StartPage", animated: false); 
} 

MyMasterDetail,有導航到MyNavigationPage/SettingsPage按鈕和其他的頁面類似。

如果我在模擬器或Android 6中的真實設備上使用Android 5,則無關緊要,其行爲是相同的。

回答

0

當使用MasterDetail作爲根目錄時,實際上並沒有在其他地方導航。您只需將MasterDetail的Detail屬性更改爲另一個頁面。這不是導航操作。所以你沒有真正的導航。如果您想僞造它,您需要將INavigationPageOptions添加到您的MyNavigationPage,並將ClearNavigationStackOnNavigation屬性設置爲false。這將不斷將新頁面推送到MasterDetailPage.Detail MyNavigationPage而不清除堆棧(PopToRoot)。那麼這將允許你的bac按鈕像你想要的那樣行事。

+0

只是爲了確保我得到這個權利 - 如果我在導航某處時未清除堆棧,那麼當我還沒有做任何導航時,後退按鈕會關閉我的應用程序? – Haukinger

+0

不,如果您沒有清除堆棧,後退按鈕將按預期工作,因爲您正在將頁面添加到導航堆棧。如果你清除了堆棧,你的後退按鈕將關閉你的應用程序,因爲除了你的根目錄MasterDetailPage –

+0

之外,你的導航堆棧上沒有任何東西,我認爲這是誤會。我_want_後退按鈕關閉應用程序。但它不會關閉它,除非我「導航」/更改一次細節屬性。 – Haukinger

相關問題