2

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)
Community
  • 1
  • 1
Michael Williams
  • 381
  • 1
  • 4
  • 12
  • Looking at http://stackoverflow.com/questions/12533006/android-app-crashes-with-nullpointerexception-in-choreographer and http://stackoverflow.com/questions/20176877/weird-nullpointerexception-in-spinner this looks like it's a kitkat change to do with `Ellipsize` in the standard template – Stuart Nov 25 '13 at 20:21
  • Thanks. How would I go about compensating for the kitkat change as MvvmCross and Xamarin are in the middle? – Michael Williams Nov 26 '13 at 06:01
  • @Stuart is there any workaround for this? I tried to remove all the `ellipsize` used in my Layouts w/o any success. – Alberto Estrella Nov 27 '13 at 12:19
  • 1
    @michaelw13 check the Cheesebaron answer in this issue: https://github.com/MvvmCross/MvvmCross/issues/507#issuecomment-29458182 it may solve your issue. – Alberto Estrella Nov 28 '13 at 13:18

1 Answers1

0

As per https://github.com/MvvmCross/MvvmCross/issues/507 this issue is fixed in 3.1.1

Michael Williams
  • 381
  • 1
  • 4
  • 12