xabre / xamarin-forms-tab-badge

Xamarin Forms bindable Tab badges for iOS, Android, UWP, MacOS and WPF
MIT License
307 stars 75 forks source link

Android API 15 - Java.Lang.NoSuchMethodError #23

Closed denizz-ryzhkov closed 7 years ago

denizz-ryzhkov commented 7 years ago

When I run plugin on Android API 15 devices, I got error: java.lang.NoSuchMethodError: no method with name='setBackground' signature='(Landroid/graphics/drawable/Drawable;)V' in class Landroid/widget/TextView

Its happens in BadgeView.cs line 97 - Background = _backgroundShape; API Level 15 do not support method setBackground(Drawable), it was added in API Level 16. You can use SetBackgroundDrawable(Drawable) method instead.

Full log: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <3fd174ff54b146228c505f23cf75ce71>:0 at Java.Interop.JniEnvironment+InstanceMethods.GetMethodID (Java.Interop.JniObjectReference type, System.String name, System.String signature) [0x0005b] in :0 at Java.Interop.JniType.GetInstanceMethod (System.String name, System.String signature) [0x0000c] in :0 at Java.Interop.JniPeerMembers+JniInstanceMethods.GetMethodInfo (System.String encodedMember) [0x00031] in :0 at Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeVirtualVoidMethod (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters) [0x00045] in :0 at Android.Views.View.set_Background (Android.Graphics.Drawables.Drawable value) [0x00031] in :0 at Plugin.Badge.Droid.BadgeView.Init (Android.Content.Context context, Android.Views.View target) [0x000c1] in E:\Projects\xamarin-forms-tab-badge\Source\Plugin.Badge.Droid\BadgeView.cs:97 at Plugin.Badge.Droid.BadgeView..ctor (Android.Content.Context context, Android.Util.IAttributeSet attrs, System.Int32 defStyle, Android.Views.View target) [0x00020] in E:\Projects\xamarin-forms-tab-badge\Source\Plugin.Badge.Droid\BadgeView.cs:66 at Plugin.Badge.Droid.BadgeView..ctor (Android.Content.Context context, Android.Views.View target) [0x00000] in E:\Projects\xamarin-forms-tab-badge\Source\Plugin.Badge.Droid\BadgeView.cs:60 at PlanetVerify.Droid.Renderers.BadgedTabbedPageRenderer.AddTabBadge (System.Int32 tabIndex) [0x000c0] in /Users/a1/PV_repo/PlanetVerify/PlanetVerify.Droid/Renderers/BadgedTabbedPageRenderer.cs:62 at PlanetVerify.Droid.Renderers.BadgedTabbedPageRenderer+casync0.MoveNext () [0x000c0] in /Users/a1/PV_repo/PlanetVerify/PlanetVerify.Droid/Renderers/BadgedTabbedPageRenderer.cs:149 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <3fd174ff54b146228c505f23cf75ce71>:0 at System.Runtime.CompilerServices.AsyncMethodBuilderCore+<>c.b__6_0 (System.Object state) [0x00000] in <3fd174ff54b146228c505f23cf75ce71>:0 at Android.App.SyncContext+<>cDisplayClass2_0.b__0 () [0x00000] in :0 at Java.Lang.Thread+RunnableImplementor.Run () [0x00008] in :0 at Java.Lang.IRunnableInvoker.n_Run (System.IntPtr jnienv, System.IntPtr native__this) [0x00008] in :0 at (wrapper dynamic-method) System.Object:dbd63dec-73dd-405b-a849-4a1b22c93df1 (intptr,intptr) --- End of managed Java.Lang.NoSuchMethodError stack trace --- java.lang.NoSuchMethodError: no method with name='setBackground' signature='(Landroid/graphics/drawable/Drawable;)V' in class Landroid/widget/TextView; at mono.java.lang.RunnableImplementor.n_run(Native Method) at mono.java.lang.RunnableImplementor.run(RunnableImplementor.java:30) at android.os.Handler.handleCallback(Handler.java:605) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4424) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:817) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584) at dalvik.system.NativeStart.main(Native Method)

xabre commented 7 years ago

Fixed with v 1.1.2