我正在开发一个使用Xamarin.Forms进行跨平台使用的应用程序.最近我在Mac上更新了Xamarin Studio并更新了NuGet包.
我现在收到这个错误:尝试在空对象引用上调用虚方法’void android.view.View.unFocus(android.view.View)’. (见下面的堆栈跟踪)
当导航远离(或重新渲染)除根视图之外的任何页面时,会发生这种情况.我不相信我已经改变了导航或页面渲染的任何部分.
我很抱歉,如果这有些模糊,从堆栈跟踪看来,这不是从我的代码开始(以任何可追踪的方式).我不知道从哪里开始调试.任何建议都会非常有帮助!
堆栈跟踪
--- End of managed Java.Lang.NullPointerException stack trace --- java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.unFocus(android.view.View)' on a null object reference at android.view.ViewGroup.removeViewInternal(ViewGroup.java:4937) at android.view.ViewGroup.removeViewAt(ViewGroup.java:4899) at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1540) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595) at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:757) at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2355) at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2146) at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2098) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2008) at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:710) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:158) at android.app.ActivityThread.main(ActivityThread.java:7224) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
编辑:这只发生在Android上.
编辑:其他信息:
这主要发生在调用Navigation.PushAsync或Navigation.PopAsync(包括按下用户后退按钮)时.
以下是我的应用中出现的最简单的示例:
从主屏幕开始,用户可以采取行动导致QR码扫描页面.此QR码包含有关此驱动程序将提供的负载的信息.扫描完成后,我保存信息并从导航中弹出扫描页面,然后自动将它们推送到加载屏幕.加载数据后,我将它们推送到所需信息列表. (所以现在导航堆栈有[main,loading_screen,list_view])如果此时调用任何Navigation.PopAsync(或PushAsync),那么应用程序崩溃.
解决方法
这是Xamarin Forms 2.3.3.193中确认的错误:
Bug 53179 – PopAsync crashing after RemovePage when support packages are updated to 25.1.1