View.Measure使用SlidingMenuSharp在ArgumentException上失败

时间:2014-05-23 07:11:42

标签: android xamarin xamarin.android slidingmenu

我正在使用SlidingMenuSharp(https://github.com/Cheesebaron/SlidingMenuSharp)。随机时我的应用程序崩溃了下面的错误。我无法确定原因 - 菜单不必在出错时进行操作甚至打开。我也没有这个错误的callstack,所以我不知道"谁"打电话给这个和什么时候。

05-22 16:30:30.340 I/MonoDroid(30088): UNHANDLED EXCEPTION: System.ArgumentException: 'jobject' must not be IntPtr.Zero. 05-22 16:30:30.340 I/MonoDroid(30088): Parameter name: jobject 
05-22 16:30:30.340 I/MonoDroid(30088): at Android.Runtime.JNIEnv.CallVoidMethod (intptr,intptr,Android.Runtime.JValue[]) [0x00010] in /Users/builder/data/lanes/monodroid-mlion-monodroid-4.12-series/7f0e3d3c/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.g.cs:499 
05-22 16:30:30.340 I/MonoDroid(30088): at Android.Views.View.Measure (int,int) [0x0002d] in /Users/builder/data/lanes/monodroid-mlion-monodroid-4.12-series/7f0e3d3c/source/monodroid/src/Mono.Android/platforms/android-14/src/generated/Android.Views.View.cs:10375 
05-22 16:30:30.340 I/MonoDroid(30088): at SlidingMenuSharp.CustomViewAbove.OnMeasure (int,int) [0x0002c] in d:\Devel\speedcamsprototype\Application\Android\SlidingMenuSharp\CustomViewAbove.cs:339 
05-22 16:30:30.340 I/MonoDroid(30088): at Android.Views.View.n_OnMeasure_II (intptr,intptr,int,int) [0x00009] in /Users/builder/data/lanes/monodroid-mlion-monodroid-4.12-series/7f0e3d3c/source/monodroid/src/Mono.Android/platforms/android-14/src/generated/Android.Views.View.cs:11378 
05-22 16:30:30.340 I/MonoDroid(30088): at (wrapper dynamic-method) object.bd42ef49-55d3-4861-a730-0897a6e73e12 (intptr,intptr,int,int) <IL 0x0001d, 0x0004b>

任何想法是怎么回事?感谢。

1 个答案:

答案 0 :(得分:0)

好的,通过长时间的试错过程我找到了原因。如果您在以这种方式使用SlidingMenuSharp的活动中使用布局:

using (var mainlayout = FindViewById<RelativeLayout>(Resource.Id.mainLayout))
{
    mainLayout.SetBackgroundResource(Resource.Drawable.bg_blue);
}

你会在问题中得到例外。但是,如果你不使用using(我想在GC处理引用之前留出更多时间让一些附加的东西做出反应?),一切正常。

var mainlayout = FindViewById<RelativeLayout>(Resource.Id.mainLayout);
mainLayout.SetBackgroundResource(Resource.Drawable.bg_blue);

也许它更像是一种解决方法 - 我猜他们应该以某种方式在SlidingMenuSharp中解决这个问题,但它现在有效。