在 Xamarin.Forms 中的 OnStart 期间设置 MainPage = NavigationPage 在 Android 中显示空白屏幕
Setting MainPage = NavigationPage during OnStart in Xamarin.Forms displays a blank screen in Android
我有一个 Xamarin Forms 应用程序,我在 OnStart 期间将 MainPage 设置为 NavigationPage。
NavigationPage 是 static(保存在内存中以供重用)。
当我在 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;
}
}
在构造函数中设置MainPage和在OnStart方法中设置有什么区别?
您不能在 onstart 中使用在 init 调用之外初始化的静态主页执行此操作。
在 InitializeComponent 之后的构造函数中执行。
像这样:
public partial class App : Application
{
private static readonly NavigationPage NavigationPage;
public App ()
{
InitializeComponent();
NavigationPage = new NavigationPage(new MainPage());
MainPage = NavigationPage;
}
}
我有一个 Xamarin Forms 应用程序,我在 OnStart 期间将 MainPage 设置为 NavigationPage。
NavigationPage 是 static(保存在内存中以供重用)。
当我在 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;
}
}
在构造函数中设置MainPage和在OnStart方法中设置有什么区别?
您不能在 onstart 中使用在 init 调用之外初始化的静态主页执行此操作。
在 InitializeComponent 之后的构造函数中执行。
像这样:
public partial class App : Application
{
private static readonly NavigationPage NavigationPage;
public App ()
{
InitializeComponent();
NavigationPage = new NavigationPage(new MainPage());
MainPage = NavigationPage;
}
}