据我所知,如果重新创建主机本机Activity,则会重新创建Xamarin Forms页面。 如果我在设备上启用“不要保留活动”,则可以轻松测试。 我希望NavigationPage能够使用Xamarin Forms Pages保留后台堆栈。
如何保留后筹码? 我必须实现自己的NavigationPage吗? 我对当前版本的Xamarin Forms有哪些选择?
答案 0 :(得分:1)
安德烈,
使根视图控制器成为您的NavigationPage,您可以根据需要推送尽可能多的ContentPage。导航页面保持自动推送视图堆栈,然后您可以将它们弹出到您的rootview ContentPage或以前的ContentPage ... ...
var mainNav = new NavigationPage(new BoxedView());
然后推动:
Xamarin.Forms.Device.BeginInvokeOnMainThread(() =>
Navigation.PushAsync(CONTENT_PAGE_OBJECT, false));
要弹出:
Xamarin.Forms.Device.BeginInvokeOnMainThread(() => Navigation.PopAsync(true));
答案 1 :(得分:1)
如果您还记得push and pop operation in stack,那么这张图片将为您提供所需的一切
答案 2 :(得分:0)
您可以在此处管理导航堆栈:
//Adding pages to Navigation stack
Xamarin.Forms.Current.MainPage = new NavigationPage(new Page1());
Xamarin.Forms.Current.MainPage.Navigation.PushAsync(new Page2(), false));
Xamarin.Forms.Current.MainPage.Navigation.PushAsync(new Page3(), false));
//Removing pages from Navigation stack
var page3 = Xamarin.Forms.Current.MainPage.Navigation.PopAsync(false));
var page2 = Xamarin.Forms.Current.MainPage.Navigation.PopAsync(false));
var page1 = Xamarin.Forms.Current.MainPage.Navigation.PopAsync(false));