Closed trampster closed 8 years ago
Despite the exception happening on SetContentView line with none of my code in the stack trace the issue was caused by a custom view which was used by my main view. Which was not using the ContextCompat version of getDrawable
To help us fix your issue, please provide the information in the below template.
Not crashing
Actual behavior
Unhandled Exception: System.NotSupportedException: Could not activate JNI Handle 0x21b00041 (key_handle 0x428ae8b0) of Java type 'md526c6a644969529b31d1110de59aec88a/TransmittingRadioView' as managed type 'HeadExtension.Droid.TransmittingRadioView'.
This occurs on the SetContentView of my main activity which inherits from MvxAppCompatActivity
Configuration
Version: 4.2.2 (mostly see below) nuget config is: MvvmCross 4.1.4 targetFramework="monoandroid60" MvvmCross.Binding 4.2.2 targetFramework="monoandroid60" MvvmCross.Core 4.2.2 targetFramework="monoandroid60" MvvmCross.Droid.Shared 4.2.2 targetFramework="monoandroid60" MvvmCross.Droid.Support.V4 4.2.2 targetFramework="monoandroid60" MvvmCross.Droid.Support.V7.AppCompat 4.2.2 targetFramework="monoandroid60" MvvmCross.Platform 4.2.2 targetFramework="monoandroid60" MvvmCross.Plugin.Color 4.1.6 targetFramework="monoandroid50" MvvmCross.Plugin.Json 4.2.2 targetFramework="monoandroid60" MvvmCross.Plugin.Visibility 4.1.6 targetFramework="monoandroid50" MvvmCross.StarterPack 4.1.6 targetFramework="monoandroid60" Newtonsoft.Json 9.0.1 targetFramework="monoandroid60" Xamarin.Android.Support.Animated.Vector.Drawable 23.4.0 targetFramework="monoandroid60" Xamarin.Android.Support.v4 23.4.0 targetFramework="monoandroid60" Xamarin.Android.Support.v7.AppCompat 23.4.0 targetFramework="monoandroid60" Xamarin.Android.Support.Vector.Drawable 23.4.0 targetFramework="monoandroid60"
Here is the stack trace: android.runtime.JavaProxyThrowable: System.NotSupportedException: Could not activate JNI Handle 0x21b00041 (key_handle 0x428ae8b0) of Java type 'md526c6a644969529b31d1110de59aec88a/TransmittingRadioView' as managed type 'HeadExtension.Droid.TransmittingRadioView'. ---> Java.Lang.NoSuchMethodError: no method with name='getDrawable' signature='(I)Landroid/graphics/drawable/Drawable;' in class Landroid/content/Context; 07-22 11:57:39.437 I/dalvikvm(27895): at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Users/builder/data/lanes/2923/52635947/source/mono/external/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143 07-22 11:57:39.437 I/dalvikvm(27895): at Java.Interop.JniEnvironment+InstanceMethods.GetMethodID (JniObjectReference type, System.String name, System.String signature) [0x00068] in /Users/builder/data/lanes/3340/4e275588/source/Java.Interop/src/Java.Interop/Java.Interop/JniEnvironment.g.cs:11240 07-22 11:57:39.437 I/dalvikvm(27895): at Java.Interop.JniType.GetInstanceMethod (System.String name, System.String signature) [0x0000f] in /User 07-22 11:57:39.437 I/dalvikvm(27895): at mono.android.TypeManager.n_activate(Native Method) 07-22 11:57:39.437 I/dalvikvm(27895): at mono.android.TypeManager.Activate(TypeManager.java:7) 07-22 11:57:39.438 I/dalvikvm(27895): at md526c6a644969529b31d1110de59aec88a.TransmittingRadioView.(TransmittingRadioView.java:35)
07-22 11:57:39.438 I/dalvikvm(27895): at java.lang.reflect.Constructor.constructNative(Native Method)
07-22 11:57:39.438 I/dalvikvm(27895): at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
07-22 11:57:39.438 I/dalvikvm(27895): at android.view.LayoutInflater.createView(LayoutInflater.java:594)
07-22 11:57:39.438 I/dalvikvm(27895): at md5bf0126c95bf9fc0db24c02c9adb4cfa7.MvxLayoutInflater_PrivateFactoryWrapper2.n_onCreateView(Native Method)
07-22 11:57:39.438 I/dalvikvm(27895): at md5bf0126c95bf9fc0db24c02c9adb4cfa7.MvxLayoutInflater_PrivateFactoryWrapper2.onCreateView(MvxLayoutInflater_PrivateFactoryWrapper2.java:32)
07-22 11:57:39.438 I/dalvikvm(27895): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
07-22 11:57:39.440 I/dalvikvm(27895): at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
07-22 11:57:39.440 I/dalvikvm(27895): at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
07-22 11:57:39.440 I/dalvikvm(27895): at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
07-22 11:57:39.440 I/dalvikvm(27895): at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
07-22 11:57:39.440 I/dalvikvm(27895): at md5b23e6ea01c86118cf1fb48a68ec892bd.PttView.n_onCreate(Native Method)
07-22 11:57:39.440 I/dalvikvm(27895): at md5b23e6ea01c86118cf1fb48a68ec892bd.PttView.onCreate(PttView.java:31)
07-22 11:57:39.446 I/dalvikvm(27895): at android.app.Activity.performCreate(Activity.java:5264)
07-22 11:57:39.450 I/dalvikvm(27895): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)
07-22 11:57:39.450 I/dalvikvm(27895): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2302)
07-22 11:57:39.450 I/dalvikvm(27895): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
07-22 11:57:39.450 I/dalvikvm(27895): at android.app.ActivityThread.access$800(ActivityThread.java:151)
07-22 11:57:39.450 I/dalvikvm(27895): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)
07-22 11:57:39.450 I/dalvikvm(27895): at android.os.Handler.dispatchMessage(Handler.java:110)
07-22 11:57:39.450 I/dalvikvm(27895): at android.os.Looper.loop(Looper.java:193)
07-22 11:57:39.450 I/dalvikvm(27895): at android.app.ActivityThread.main(ActivityThread.java:5299)
07-22 11:57:39.450 I/dalvikvm(27895): at java.lang.reflect.Method.invokeNative(Native Method)
07-22 11:57:39.451 I/dalvikvm(27895): at java.lang.reflect.Method.invoke(Method.java:515)
07-22 11:57:39.451 I/dalvikvm(27895): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829)
07-22 11:57:39.451 I/dalvikvm(27895): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645)
07-22 11:57:39.452 I/dalvikvm(27895): at dalvik.system.NativeStart.main(Native Method)
This part seems to be interesting: Java.Lang.NoSuchMethodError: no method with name='getDrawable' signature='(I)Landroid/graphics/drawable/Drawable;
getDrawable was added in API 21, this means that you shouldn't be calling it, rather you should be calling ContextCompat.getDrawable(Context context, int id)