在OnAppearing Xamarin.Forms中的PopModalAsync。

问题描述 投票:0回答:1

我正在开发一个xamarin.forms应用程序。

在一个页面上,在开始一个视频之前,我不得不 检查网络连接是否打开 否则我就会显示一个错误信息,然后 我必须关闭页面.

我写了这个代码,但它不工作,弹出窗口显示,但在我按 "确定 "之后 应用程序冻结,无法工作了.

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

            //...

        }
    }

控制是在内容页的 OnAppearing 事件,是否因此 Navigation.PopModalAsync() 不工作?我怎么才能解决这个问题呢?

c# xamarin xamarin.forms xamarin.android xamarin.ios
1个回答
1
投票

你应该使用异步操作,因为这两种操作都是为了让你的网站更安全。DisplayAlertPopModalAsync 返回一个任务。另外,你应该覆盖页面的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,我建议使用MVVM,不要直接在页面的codebehind上写代码,但现在应该可以。

© www.soinside.com 2019 - 2024. All rights reserved.