Xamarin.FormsShell应用程序首次启动时出现导航错误



我的应用程序主页面正在检查用户信息。弹出窗口显示,根据某些条件导航到具有网络视图的页面。我使用标准方法导航到它:

await Shell.Current.Navigation.PushAsync(new BindCardPage(user.uid), false);

但当我第一次启动应用程序时,在尝试导航到网页后,NRE被抛出:

System.NullReferenceException: Object reference not set to an instance of an object.
at Xamarin.Forms.ShellSection.OnPushAsync (Xamarin.Forms.Page page, System.Boolean animated) [0x00013] in D:a1sXamarin.Forms.CoreShellShellSection.cs:514 
at Xamarin.Forms.ShellSection+NavigationImpl.OnPushAsync (Xamarin.Forms.Page page, System.Boolean animated) [0x00000] in D:a1sXamarin.Forms.CoreShellShellSection.cs:714 
at Xamarin.Forms.Internals.NavigationProxy.PushAsync (Xamarin.Forms.Page root, System.Boolean animated) [0x00013] in D:a1sXamarin.Forms.CoreNavigationProxy.cs:117 
at Xamarin.Forms.Shell+NavigationImpl.OnPushAsync (Xamarin.Forms.Page page, System.Boolean animated) [0x00000] in D:a1sXamarin.Forms.CoreShellShell.cs:1161 
at Xamarin.Forms.Internals.NavigationProxy.PushAsync (Xamarin.Forms.Page root, System.Boolean animated) [0x00013] in D:a1sXamarin.Forms.CoreNavigationProxy.cs:117 

但当我再次启动一个应用程序时(条件并没有改变(,同样的弹出窗口会导航到一个没有问题的页面。我尝试添加一个空构造函数并设置一个默认值,但没有帮助。查看断点-我传递的所有数据都不为null,WebView组件也不为null。这是一个wierd错误,我不知道该怎么处理它

我的Xamarin.Forms版本是4.4.0.991537

也发生了类似的崩溃,现在的问题似乎是shell在4.2.xxx及更高版本中将一个空页面推送到NavStack中,这很烦人,但事实就是这样。我通过在Apps shell类的OnBackButtonPressed中编写以下代码来解决这个问题。

protected override bool OnBackButtonPressed()
{
if (Application.Current.MainPage.GetType() == typeof(AppShell) && Shell.Current.Navigation.NavigationStack.Where(x => x != null).Any())
{
return base.OnBackButtonPressed();
}
else
{
System.Diagnostics.Process.GetCurrentProcess().CloseMainWindow();
return true;
}
} 

其中AppShell是我的自定义Shell类。

祝你好运,如果你有任何问题,请随时回复

相关内容

  • 没有找到相关文章

最新更新