Настройка MainPage = NavigationPage во время запуска в Xamarin. Forms отображает пустой экран в Android - PullRequest
0 голосов
/ 30 мая 2018

У меня есть приложение Xamarin Forms, в котором я настраиваю MainPage на NavigationPage во время OnStart.
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

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

        MainPage = NavigationPage;
    }
}

В чем разница между настройкой MainPage в конструкторе и в методе OnStart?

1 Ответ

0 голосов
/ 30 мая 2018

Вы не делаете это в onstart со статической главной страницей, инициализированной вне вызова инициализации.

Делайте это в конструкторе после InitializeComponents.

Примерно так:

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

    MainPage = NavigationPage;
}
}
...