2015-10-25 57 views
2

我得到的错误是很没用:空例外与FormsAppCompatActivity

[MonoDroid] UNHANDLED EXCEPTION: 
[MonoDroid] System.NullReferenceException: Object reference not set to an instance of an object 
[MonoDroid] at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() [0x0000b] in /Users/builder/data/lanes/2185/53fce373/source/mono/mcs/class/corlib/System.Runtime.ExceptionServices/ExceptionDispatchInfo.cs:61 
[MonoDroid] at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>m__0 (object) [0x00000] in /Users/builder/data/lanes/2185/53fce373/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/AsyncMethodBuilder.cs:1006 
[MonoDroid] at Android.App.SyncContext/<Post>c__AnonStorey0.<>m__0() [0x00000] in /Users/builder/data/lanes/2185/53fce373/source/monodroid/src/Mono.Android/src/Android.App/SyncContext.cs:18 
[MonoDroid] at Java.Lang.Thread/RunnableImplementor.Run() [0x0000b] in /Users/builder/data/lanes/2185/53fce373/source/monodroid/src/Mono.Android/src/Java.Lang/Thread.cs:36 
[MonoDroid] at Java.Lang.IRunnableInvoker.n_Run (intptr,intptr) [0x00009] in /Users/builder/data/lanes/2185/53fce373/source/monodroid/src/Mono.Android/platforms/android-23/src/generated/Java.Lang.IRunnable.cs:71 
[MonoDroid] at (wrapper dynamic-method) object.51b21b24-f225-4055-ba6f-89c907c5f353 (intptr,intptr) <IL 0x00011, 0x0001f> 

当我打开一个TabbedPage,我可以看到正在显示的选项卡,然后这种崩溃发生。

这里是我的Tabs.axml:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.TabLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/sliding_tabs" 
/> 

这是我如何设置:

 FormsAppCompatActivity.TabLayoutResource = Resource.Layout.tabs; 

我缺少什么?

回答

2

您得到“无用”堆栈跟踪的原因可能是由于从异步void方法抛出异常。 Mono框架中存在一个导致这种情况发生的问题。有关更多信息,请参见this bugzilla entry

如果你需要一个精确的堆栈跟踪,你可以尝试将Xamarin.Android升级到Alpha通道(我相信堆栈跟踪问题在那里是固定的)。

如果你无法做到这一点,你可以尝试在标签初始化或OnAppearing页面运行的任何异步void方法中设置断点,并尝试缩小抛出异常的方法/行。

+0

这真的很有趣,我之前发现过这个问题,但是太愚蠢了,无法进一步调查。如果我将所有异步无效更改为异步任务,该怎么办?我会检查。 –

+0

男人......我想给你特别的感谢,你把头发留在了我秃顶的头上。我发现这个问题,它确实发生在一个异步无效的OnAppear方法中。它是异步无效的原因是因为它重写OnAppear在父项中必须是无效的,但我想在其中执行异步的东西。谢谢,我的朋友 :) –