[英]PopModalAsync in OnAppearing Xamarin.Forms
我正在开发一个 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()
不起作用的原因吗? 我该如何解决?
您应该使用异步操作,因为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 而不是直接在页面的代码隐藏上编写代码,但这现在应该可以工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.