2016-08-30 94 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