繁体   English   中英

Xamarin.Forms ABCA导航不适用于Android

[英]Xamarin.Forms A-B-C-A navigation not working for Android

因此,我创建了一个PCL应用程序,该应用程序包含3个页面:第1页,第2页和第3页。每个页面都有标题页面1,页面2或页面3,然后在每个页面上放置一个按钮。 然后,我按如下所示编写代码,当单击按钮时从第1页跳至第2页,然后从第2页跳至第3页。

在页面1按钮上单击事件处理程序:

    await Navigation.PushAsync(new Page2());

在页面2按钮上单击事件处理程序:

    await Navigation.PushAsync(new Page3());

然后,在第3页中,我通过将第2页转义,直接在代码导航下面使用按钮单击事件处理程序返回第1页。

    Navigation.RemovePage(Navigation.NavigationStack.ElementAt(1));
    await Navigation.PopAsync();

该代码可以在iOS上完美运行,但不能在Android上运行。 在Android上,导航回到第1页,但未呈现第1页视图,标题消失且按钮消失,因此视图基本上是空白的。 我在Nexus 4 API19和API 22模拟器上进行了测试,结果相同。

有人可以帮忙吗?

如果仅使用PushAsync将页面推送到导航堆栈中,并且没有模式,选项卡式页面,主详细信息页面等,则Xamarin.Forms直接支持的最佳解决方案是使用await Navigation.PopToRootAsync() 它将从导航堆栈中弹出除“根”以外的所有模态。 但这仅考虑了最顶层的模态堆栈。

如果万一您的导航堆栈包含模态,主要细节等,那么我建议您直接使用MainPage属性来执行此操作,而不是尝试尝试执行的路线(即:使用导航服务)。

首先,将App.cs中的MainPage设置为Page1

MainPage = new Navigationpage(Page1());

进行与事件中相同的操作,直到出现Page3

Page3按钮事件中,执行以下操作:

MainPage = new Navigationpage(Page1());

这将重置应用程序的MainPage ,而Page3Page2都将消失在导航堆栈中。

缺点:Page1控件的状态不会保留,您必须将其存储在OnDisappearing事件的某些变量中。

暂无
暂无

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

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