【问题标题】:Setting MainPage = NavigationPage during OnStart in Xamarin.Forms displays a blank screen in Android在 Xamarin.Forms 的 OnStart 期间设置 MainPage = NavigationPage 在 Android 中显示空白屏幕
【发布时间】: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 有什么区别?

【问题讨论】:

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


【解决方案1】:

您不要在 onstart 中使用在 init 调用之外初始化的静态主页。

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

像这样:

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

    MainPage = NavigationPage;
}
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    相关资源
    最近更新 更多