【发布时间】:2018-11-09 05:11:50
【问题描述】:
我有一个 Xamarin 表单应用程序,我在 OnStart 期间将 MainPage 设置为 NavigationPage。
NavigationPage 是静态的(保留在内存中以供重复使用)。
当我在 Android 中按下后退按钮并返回应用程序时,将再次执行 OnStart 方法并且应用程序显示一个空白屏幕。
在这里查看重现:Xamarin.Forms OnStart Navigation
public partial class App : Application
{
private static readonly NavigationPage NavigationPage = new NavigationPage(new MainPage());
public App ()
{
InitializeComponent();
}
protected override void OnStart()
{
MainPage = NavigationPage;
}
}
如果我在构造函数中执行相同的操作,应用程序将按预期运行:没有空白屏幕,并且显示最后访问的页面。
在此处查看重现:Xamarin.Forms Constructor Navigation
public partial class App : Application
{
private static readonly NavigationPage NavigationPage = new NavigationPage(new MainPage());
public App ()
{
InitializeComponent();
MainPage = NavigationPage;
}
}
在构造函数和 OnStart 方法中设置 MainPage 有什么区别?
【问题讨论】:
-
应该在App构造函数中设置MainPage属性:docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/…
-
并且不起作用的原因是构造函数在UI线程上运行而OnStart没有。
标签: xamarin xamarin.forms xamarin.android navigation onstart