Не переходить с одной страницы на другую в Xamarin.Forms при использовании события обнаружения сотрясений Xamarin.Essentials - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть два класса MainPage.xaml и Home.xaml. Я написал Home.xaml с использованием кода обнаружения сотрясений Xamarin.Essentials и хочу перейти от Home к MainPage.xaml, но он не работает.

Home.xaml.cs

namespace StarRatingApp
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class Home : ContentPage
    {
        public Home()
        {
            InitializeComponent();
        }

        protected override void OnAppearing()
        {
            base.OnAppearing();

            Accelerometer.ShakeDetected += Accelerometer_ShakeDetected;

            Accelerometer.Start(SensorSpeed.Game);
        }


        private void Accelerometer_ShakeDetected(object sender, EventArgs e)
        {
            MainThread.BeginInvokeOnMainThread(() =>
            {
                new NavigationPage(new MainPage());
            });
        }  
    }

Что я делаю не так в Accelerometer_ShakeDetected метод ??

1 Ответ

0 голосов
/ 06 апреля 2020

Вы не перемещаетесь в методе. Вы просто создаете новую NavigationPage. И это ничего не сделает. Вы должны сообщить системе, где вы хотите перемещаться и как.

У вас есть два варианта:

1) Перейдите на свою страницу (это добавит страницу в стек навигации)

await Navigation.PushAsync(new MainPage());

или 2) Перезаписать вашу главную страницу новой NavigationPage (при этом удаляется весь NavigationStack и запускается «новая» навигация)

Application.Current.MainPage = new NavigationPage(new MainPage());

Более подробную информацию о навигации можно найти в документация >> https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/navigation/hierarchical

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...