Xamarin.forms: [Bug] Regression in Xamarin.Forms 4.2.0-pre1 (Java.Lang.NullPointerException when using FastRenderers)

Created on 27 Jul 2019  路  3Comments  路  Source: xamarin/Xamarin.Forms

Description

My android app is crashing when using XF 4.2.0-pre1.
No exception with XF 4.1.0, so I think this is a regression.
Also, no exception with XF 4.2.0-pre1 if I use LegacyRenderers instead of FastRenderers.

Steps to Reproduce

  1. Open the attached solution, build and launch the app
  2. Click any item in the list on the left

Expected Behavior

The clicked item should be selected (and its color should change).

Actual Behavior

App crashes with the following exception:

07-27 19:42:53.567 I/MonoDroid(29000): Java.Lang.NullPointerException: Exception of type 'Java.Lang.NullPointerException' was thrown.
07-27 19:42:53.567 I/MonoDroid(29000):   at Java.Interop.JniEnvironment+InstanceMethods.CallNonvirtualVoidMethod (Java.Interop.JniObjectReference instance, Java.Interop.JniObjectReference type, Java.Interop.JniMethodInfo method, Java.Interop.JniArgumentValue* args) [0x00089] in <d62a515dd509498b9888afef1e7ee082>:0 
07-27 19:42:53.567 I/MonoDroid(29000):   at Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeVirtualVoidMethod (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters) [0x0005d] in <d62a515dd509498b9888afef1e7ee082>:0 
07-27 19:42:53.567 I/MonoDroid(29000):   at Android.Widget.TextView.SetTextColor (Android.Content.Res.ColorStateList colors) [0x00031] in <91096acba71b4cd4bc97355af9ac8959>:0 
07-27 19:42:53.567 I/MonoDroid(29000):   at Xamarin.Forms.Platform.Android.FastRenderers.LabelRenderer.UpdateColor () [0x0002b] in D:\a\1\s\Xamarin.Forms.Platform.Android\FastRenderers\LabelRenderer.cs:277 
07-27 19:42:53.567 I/MonoDroid(29000):   at Xamarin.Forms.Platform.Android.FastRenderers.LabelRenderer.UpdateText () [0x00092] in D:\a\1\s\Xamarin.Forms.Platform.Android\FastRenderers\LabelRenderer.cs:359 
07-27 19:42:53.567 I/MonoDroid(29000):   at Xamarin.Forms.Platform.Android.FastRenderers.LabelRenderer.OnElementPropertyChanged (System.Object sender, System.ComponentModel.PropertyChangedEventArgs e) [0x0005f] in D:\a\1\s\Xamarin.Forms.Platform.Android\FastRenderers\LabelRenderer.cs:254 
07-27 19:42:53.567 I/MonoDroid(29000):   at (wrapper delegate-invoke) <Module>.invoke_void_object_PropertyChangedEventArgs(object,System.ComponentModel.PropertyChangedEventArgs)
07-27 19:42:53.567 I/MonoDroid(29000):   at Xamarin.Forms.BindableObject.OnPropertyChanged (System.String propertyName) [0x00000] in D:\a\1\s\Xamarin.Forms.Core\BindableObject.cs:211 
07-27 19:42:53.567 I/MonoDroid(29000):   at Xamarin.Forms.Element.OnPropertyChanged (System.String propertyName) [0x00000] in D:\a\1\s\Xamarin.Forms.Core\Element.cs:359 
07-27 19:42:53.567 I/MonoDroid(29000):   at Xamarin.Forms.BindableObject.ClearValue (Xamarin.Forms.BindableProperty property, System.Boolean fromStyle, System.Boolean checkAccess) [0x000c6] in D:\a\1\s\Xamarin.Forms.Core\BindableObject.cs:78 
07-27 19:42:53.567 I/MonoDroid(29000):   at Xamarin.Forms.BindableObject.ClearValue (Xamarin.Forms.BindableProperty property) [0x00000] in D:\a\1\s\Xamarin.Forms.Core\BindableObject.cs:30 
07-27 19:42:53.568 I/MonoDroid(29000):   at Xamarin.Forms.Setter.UnApply (Xamarin.Forms.BindableObject target, System.Boolean fromStyle) [0x00084] in D:\a\1\s\Xamarin.Forms.Core\Setter.cs:102 
07-27 19:42:53.568 I/MonoDroid(29000):   at Xamarin.Forms.TriggerBase.OnConditionChanged (Xamarin.Forms.BindableObject bindable, System.Boolean oldValue, System.Boolean newValue) [0x00074] in D:\a\1\s\Xamarin.Forms.Core\Interactivity\TriggerBase.cs:106 
07-27 19:42:53.568 I/MonoDroid(29000):   at Xamarin.Forms.BindingCondition.OnBoundPropertyChanged (Xamarin.Forms.BindableObject bindable, System.Object oldValue, System.Object newValue) [0x0001d] in D:\a\1\s\Xamarin.Forms.Core\Interactivity\BindingCondition.cs:95 
07-27 19:42:53.568 I/MonoDroid(29000):   at Xamarin.Forms.BindableObject.SetValueActual (Xamarin.Forms.BindableProperty property, Xamarin.Forms.BindableObject+BindablePropertyContext context, System.Object value, System.Boolean currentlyApplying, Xamarin.Forms.Internals.SetValueFlags attributes, System.Boolean silent) [0x00120] in D:\a\1\s\Xamarin.Forms.Core\BindableObject.cs:445 
07-27 19:42:53.568 I/MonoDroid(29000):   at Xamarin.Forms.BindableObject.SetValueCore (Xamarin.Forms.BindableProperty property, System.Object value, Xamarin.Forms.Internals.SetValueFlags attributes, Xamarin.Forms.BindableObject+SetValuePrivateFlags privateAttributes) [0x00173] in D:\a\1\s\Xamarin.Forms.Core\BindableObject.cs:379 
07-27 19:42:53.568 I/MonoDroid(29000):   at Xamarin.Forms.BindingExpression.ApplyCore (System.Object sourceObject, Xamarin.Forms.BindableObject target, Xamarin.Forms.BindableProperty property, System.Boolean fromTarget) [0x00220] in D:\a\1\s\Xamarin.Forms.Core\BindingExpression.cs:167 
07-27 19:42:53.568 I/MonoDroid(29000):   at Xamarin.Forms.BindingExpression.Apply (System.Boolean fromTarget) [0x0003e] in D:\a\1\s\Xamarin.Forms.Core\BindingExpression.cs:57 
07-27 19:42:53.568 I/MonoDroid(29000):   at Xamarin.Forms.BindingExpression+BindingExpressionPart.<PropertyChanged>b__49_0 () [0x00000] in D:\a\1\s\Xamarin.Forms.Core\BindingExpression.cs:618 
07-27 19:42:53.568 I/MonoDroid(29000):   at Java.Lang.Thread+RunnableImplementor.Run () [0x00008] in <91096acba71b4cd4bc97355af9ac8959>:0 
07-27 19:42:53.568 I/MonoDroid(29000):   at Java.Lang.IRunnableInvoker.n_Run (System.IntPtr jnienv, System.IntPtr native__this) [0x00009] in <91096acba71b4cd4bc97355af9ac8959>:0 
07-27 19:42:53.568 I/MonoDroid(29000):   at (wrapper dynamic-method) Android.Runtime.DynamicMethodNameCounter.27(intptr,intptr)
07-27 19:42:53.568 I/MonoDroid(29000):   --- End of managed Java.Lang.NullPointerException stack trace ---
07-27 19:42:53.568 I/MonoDroid(29000): java.lang.NullPointerException
07-27 19:42:53.568 I/MonoDroid(29000):  at android.widget.TextView.setTextColor(TextView.java:4023)
07-27 19:42:53.568 I/MonoDroid(29000):  at mono.java.lang.RunnableImplementor.n_run(Native Method)
07-27 19:42:53.568 I/MonoDroid(29000):  at mono.java.lang.RunnableImplementor.run(RunnableImplementor.java:30)
07-27 19:42:53.568 I/MonoDroid(29000):  at android.os.Handler.handleCallback(Handler.java:790)
07-27 19:42:53.568 I/MonoDroid(29000):  at android.os.Handler.dispatchMessage(Handler.java:99)
07-27 19:42:53.568 I/MonoDroid(29000):  at android.os.Looper.loop(Looper.java:164)
07-27 19:42:53.568 I/MonoDroid(29000):  at android.app.ActivityThread.main(ActivityThread.java:6494)
07-27 19:42:53.568 I/MonoDroid(29000):  at java.lang.reflect.Method.invoke(Native Method)
07-27 19:42:53.568 I/MonoDroid(29000):  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
07-27 19:42:53.568 I/MonoDroid(29000):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

Basic Information

  • Version with issue: XF 4.2.0-pre1 (or pre2)
  • Last known good version: XF 4.1.0.618606
  • IDE: VS 16.3.0 preview 1.0
  • Platform Target Frameworks: Android 9.0

Reproduction Link

TestXF4.2.zip

blocker 1 high regression bug

All 3 comments

I see same problem

Hi. I get analog error in pre3 version. But not see callstack, only "Java.Lang.NullPointerException". Error step: load list(in xamarin app) of items from server. Change one items in xamarin app on next comtent page. Go back. Pulltorefresh or button click to do: reload items from server. Clear list on items - No errors, download json in separate thread- no errors. Refresh pulltorefresh state, hidde indicator - no errors. But late 1-2 secons show "nullpointerexception". If downgrade project to 4.1.0.618606 - works fine. Sorry my english, dudes!

Same error on Pre 2. In my case I can correlate the issue to setting Text property of a Label if previously it had FormattedText set (and Text has null).

Was this page helpful?
0 / 5 - 0 ratings