PopModalAsyn c в OnAppearing Xamarin.Forms - PullRequest
0 голосов
/ 30 апреля 2020

Я занимаюсь разработкой приложения xamarin.forms.

На странице перед запуском видео необходимо проверить, включено ли соединение inte rnet , в противном случае я показываю сообщение об ошибке, а затем Я должен закрыть страницу .

Я написал этот код, но он не работает, отображается всплывающее окно, но после того, как я нажимаю "ОК" приложение зависает и больше не работает .

    private void ContentPage_Appearing(object sender, EventArgs e)
    {
        if (Connectivity.NetworkAccess != NetworkAccess.Internet)
        {
            DisplayAlert("WARNING!", "Error message!", "OK");
            Navigation.PopModalAsync();
        }
        else
        {

            //...

        }
    }

Управление выполняется в событии OnAppearing страницы содержимого, поэтому Navigation.PopModalAsync() не работает? Как я могу это исправить?

1 Ответ

1 голос
/ 30 апреля 2020

Вы должны использовать асинхронные операции, так как DisplayAlert и PopModalAsync возвращают задачу. Также вам следует переопределить метод OnAppearing страницы и удалить обработчик события Appearing.

protected override async void OnAppearing()
{
    base.OnAppearing();
    if (Connectivity.NetworkAccess != NetworkAccess.Internet)
    {
        await DisplayAlert("WARNING!", "Error message!", "OK");
        await Navigation.PopModalAsync();
    }
    else
    {

        //...

    }
}

Повторное использование async void не рекомендуется, и я бы предложил использовать MVVM и не писать свой код непосредственно в коде страницы, но это должно работа на данный момент.

...