在Xamarin.Forms的OnStart期间设置MainPage = NavigationPage在Android中显示空白屏幕

时间:2018-05-30 11:07:53

标签: xamarin xamarin.forms xamarin.android navigation onstart

我有一个Xamarin Forms应用程序,我在OnStart期间将MainPage设置为NavigationPage NavigationPage是静态(保留在内存中以供重复使用) 当我按下Android中的后退按钮并返回应用程序时,再次执行OnStart方法,应用程序显示一个空白屏幕。

请在此处查看repro: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;
    }
}

如果我在构造函数中执行相同的操作,则应用程序按预期运行:没有空白屏幕,并且显示最后访问的页面。

请在此处查看repro: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有什么区别?

1 个答案:

答案 0 :(得分:3)

你不要在初始调用之外初始化的静态主页的onstart中这样做。

在InitializeComponents之后在构造函数中执行。

像这样:

public partial class App : Application
{
private static readonly NavigationPage NavigationPage;
public App ()
{
    InitializeComponent(); 
    NavigationPage = new NavigationPage(new MainPage());

    MainPage = NavigationPage;
}
}