2015-10-25 100 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在父項中必須是無效的,但我想在其中執行異步的東西。謝謝,我的朋友 :) –