On Android 4.4 when showing a fragment that contains a MvxSpinner that is bound to a collection (either a List or ObservableCollection) with elements in it, a NullPointer is thrown.
If the collection is empty, the exception is not thrown.
The same code works on Android 4.3 without a problem.
The stack trace is the same as found in Android app crashes with NullPointerException in ChoreoGrapher and Weird NullPointerException in Spinner but the suggested fixes have no effect.
The fragment is managed inside a FragmentPagerAdapter taken from Cheesebaron.
Is this a Xamarin, MvvmCross, Android or pebcak issue?
Fragment:
public class XFragment : MvxFragment
{
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
OnCreateViewCalled += async (sender, args) =>
{
await ((IXViewModel)ViewModel).InitializeViewModelAsync();
};
var ignore = base.OnCreateView(inflater, container, savedInstanceState);
return this.BindingInflate(Resource.Layout.CreateCustomerProduct, null);
}
}
View:
<MvxSpinner
style="@style/formSpinner"
android:id="@+id/MyComponent.spinnerX"
android:prompt="@string/XPrompt"
local:MvxBind="ItemsSource Xes; SelectedItem MyModel.X.Bouquet" />
Stack trace:
11-25 11:11:23.425 D/AndroidRuntime(20978): Shutting down VM
11-25 11:11:23.425 W/dalvikvm(20978): threadid=1: thread exiting with uncaught exception (group=0x41851b90)
11-25 11:11:23.455 E/AndroidRuntime(20978): FATAL EXCEPTION: main
11-25 11:11:23.455 E/AndroidRuntime(20978): Process: FSIA.Android, PID: 20978
11-25 11:11:23.455 E/AndroidRuntime(20978): java.lang.NullPointerException
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.widget.TextView.makeNewLayout(TextView.java:6124)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.widget.TextView.onMeasure(TextView.java:6400)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.view.View.measure(View.java:16458)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.widget.Spinner.setUpChild(Spinner.java:632)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.widget.Spinner.makeView(Spinner.java:595)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.widget.Spinner.getBaseline(Spinner.java:431)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1262)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.widget.LinearLayout.onMeasure(LinearLayout.java:590)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.view.View.measure(View.java:16458)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.view.View.measure(View.java:16458)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.widget.ScrollView.measureChildWithMargins(ScrollView.java:1226)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.widget.ScrollView.onMeasure(ScrollView.java:326)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.view.View.measure(View.java:16458)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.view.View.measure(View.java:16458)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1447)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.view.View.measure(View.java:16458)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.widget.LinearLayout.measureVertical(LinearLayout.java:847)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.view.View.measure(View.java:16458)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.view.View.measure(View.java:16458)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
11-25 11:11:23.455 E/AndroidRuntime(20978): at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:327)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.view.View.measure(View.java:16458)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
11-25 11:11:23.455 E/AndroidRuntime(20978): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2289)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.view.View.measure(View.java:16458)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1914)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1111)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1293)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:998)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5582)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.view.Choreographer.doCallbacks(Choreographer.java:562)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.view.Choreographer.doFrame(Choreographer.java:532)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.os.Handler.handleCallback(Handler.java:733)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.os.Handler.dispatchMessage(Handler.java:95)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.os.Looper.loop(Looper.java:137)
11-25 11:11:23.455 E/AndroidRuntime(20978): at android.app.ActivityThread.main(ActivityThread.java:4998)
11-25 11:11:23.455 E/AndroidRuntime(20978): at java.lang.reflect.Method.invokeNative(Native Method)
11-25 11:11:23.455 E/AndroidRuntime(20978): at java.lang.reflect.Method.invoke(Method.java:515)
11-25 11:11:23.455 E/AndroidRuntime(20978): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
11-25 11:11:23.455 E/AndroidRuntime(20978): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
11-25 11:11:23.455 E/AndroidRuntime(20978): at dalvik.system.NativeStart.main(Native Method)