[英]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
,而Page3
和Page2
都将消失在导航堆栈中。
缺点:Page1控件的状态不会保留,您必须将其存储在OnDisappearing
事件的某些变量中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.