В нашем приложении Xamarin Forms у нас есть несколько страниц. Когда мы впервые переходим на другую страницу с главной страницы навигации, она работает как положено. Когда мы затем используем кнопку «Назад» (в приложении или системной кнопке Android) и снова переходим на следующую страницу, она не загружается. Он меняет заголовок, но показывает пустую страницу.
Не имеет значения, какую страницу вы используете в качестве первой страницы для перехода, а какая страница является второй страницей для перехода. Это также не работает, если первая и вторая страницы - это одна и та же страница.
В приложении мы инициализируем главную страницу следующим образом:
MainPage = new NavigationPage(new MainPage());
MainPage - TabbedPage.
Мы просто перемещаемся так:
if (Application.Current.MainPage is NavigationPage mainPage)
{
await mainPage.Navigation.PushAsync(new DetailPage());
}
Это работало раньше, но я думаю, что во время обновления Xamarin.Forms с 4.2.0.848062 до 4.3.0.947036 оно сломалось. Но я не могу найти ничего, что могло бы помешать этому, это заметки о выпуске.
== Редактировать ==
Мы увидели некоторую несогласованность во всех вызовах для навигации. Итак, мы создали вспомогательный класс для всей навигации. Теперь это выглядит следующим образом:
public static class NavigationHelper
{
public static void NavigateTo(Page page)
{
if (Application.Current.MainPage is NavigationPage mainPage)
{
Device.BeginInvokeOnMainThread(async () =>
{
await mainPage.Navigation.PushAsync(page);
});
}
}
}
Итак, теперь мы перемещаемся только так:
NavigationHelper.NavigateTo(new DetailPage());
Но это по-прежнему не решает проблему. Первый раз, когда мы получаем правильную страницу, во второй навигации мы получаем пустой экран. Заголовок на панели навигации меняется на заголовок страницы, к которой мы переходим. Но остальное остается пустым.