eltos / SimpleDialogFragments

An Android library to create dialogs with ease and handle user interaction reliably, using fragments and material design.
Apache License 2.0
119 stars 17 forks source link

ColorWheelView incorrect state handling leads to crash #58

Closed mtotschnig closed 4 years ago

mtotschnig commented 4 years ago

When ColorWhellView tries to restore its state, app crashes, with below stacktrace.

Steps to reproduce

  1. Activate Developer options and switch on option "Don't keep activities"
  2. Open a SimpleColorWheelDialog. Put app into background, e.g by clicking on system UI Home button. Bring app back into foreground via task switcher.

App crashes

Test Environment

Property Value
Library version 3.1-androidx
Android version API 25

Stack Trace

    java.lang.RuntimeException: Unable to start activity ComponentInfo{org.totschnig.myexpenses.debug/org.totschnig.myexpenses.activity.AccountEdit}: java.lang.NullPointerException: Attempt to get length of null array
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
        at android.app.ActivityThread.-wrap12(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6119)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
     Caused by: java.lang.NullPointerException: Attempt to get length of null array
        at android.os.Parcel.readFloatArray(Parcel.java:1048)
        at eltos.simpledialogfragment.color.ColorWheelView$SavedState.<init>(ColorWheelView.java:398)
        at eltos.simpledialogfragment.color.ColorWheelView$SavedState.<init>(ColorWheelView.java:388)
        at eltos.simpledialogfragment.color.ColorWheelView$SavedState$1.createFromParcel(ColorWheelView.java:412)
        at eltos.simpledialogfragment.color.ColorWheelView$SavedState$1.createFromParcel(ColorWheelView.java:410)
        at android.os.Parcel.readParcelable(Parcel.java:2471)
        at android.os.Parcel.readValue(Parcel.java:2365)
        at android.os.Parcel.readSparseArrayInternal(Parcel.java:2813)
        at android.os.Parcel.readSparseArray(Parcel.java:2068)
        at android.os.Parcel.readValue(Parcel.java:2422)
        at android.os.Parcel.readArrayMapInternal(Parcel.java:2732)
        at android.os.BaseBundle.unparcel(BaseBundle.java:269)
        at android.os.Bundle.getSparseParcelableArray(Bundle.java:934)
        at com.android.internal.policy.PhoneWindow.restoreHierarchyState(PhoneWindow.java:2104)
        at android.app.Dialog.onRestoreInstanceState(Dialog.java:462)
        at androidx.fragment.app.DialogFragment.onActivityCreated(DialogFragment.java:475)
        at androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:2619)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:904)
        at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1238)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1303)
        at androidx.fragment.app.FragmentManagerImpl.dispatchStateChange(FragmentManagerImpl.java:2659)
        at androidx.fragment.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManagerImpl.java:2613)
        at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:246)
        at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:542)
        at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:201)
        at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1248)
        at android.app.Activity.performStart(Activity.java:6696)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2628)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) 
        at android.app.ActivityThread.-wrap12(ActivityThread.java) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:154) 
        at android.app.ActivityThread.main(ActivityThread.java:6119) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
eltos commented 4 years ago

Thanks a lot! 👍