带有 FormsAppCompatActivity 的 TabbedPage 中的空异常

Null exception in TabbedPage with 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;

我错过了什么?

您获得 "useless" 堆栈跟踪的原因可能是由于 async void 方法抛出了异常。 Mono 框架中存在导致这种情况发生的问题。有关详细信息,请参阅 this bugzilla entry

如果您需要准确的堆栈跟踪,您可以尝试将 Xamarin.Android 升级到 Alpha 通道(我相信堆栈跟踪问题已在那里修复)。

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