android.os.BadParcelableException: ClassNotFoundException when unmarshalling -- Many crashes reported with this stack trace
Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{info.androidz.horoscope/info.androidz.horoscope.Horoscope}: android.os.BadParcelableException: ClassNotFoundException when unmarshalling:
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2429)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2493)
at android.app.ActivityThread.access$800(ActivityThread.java:166)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5584)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
at dalvik.system.NativeStart.main(NativeStart.java)
Caused by android.os.BadParcelableException: ClassNotFoundException when unmarshalling:
at android.os.Parcel.readParcelableCreator(Parcel.java:2154)
at android.os.Parcel.readParcelable(Parcel.java:2104)
at com.rey.material.app.Dialog$Builder.(Dialog.java:1534)
at com.rey.material.app.DatePickerDialog$Builder.(DatePickerDialog.java:827)
at com.rey.material.app.DatePickerDialog$Builder$1.createFromParcel(DatePickerDialog.java:858)
at com.rey.material.app.DatePickerDialog$Builder$1.createFromParcel(DatePickerDialog.java:856)
at android.os.Parcel.readParcelable(Parcel.java:2111)
at android.os.Parcel.readValue(Parcel.java:2020)
at android.os.Parcel.readArrayMapInternal(Parcel.java:2321)
at android.os.Bundle.unparcel(Bundle.java:249)
at android.os.Bundle.getSparseParcelableArray(Bundle.java:1273)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:997)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1234)
at android.support.v4.app.FragmentManagerImpl.dispatchCreate(FragmentManager.java:2041)
at android.support.v4.app.FragmentController.dispatchCreate(FragmentController.java:163)
at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:332)
at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:84)
my app's activity deriving from the AppCompatActivity onCreate method here
We encountered the same thing as well for Samsung SM-G9600
Caused by android.os.BadParcelableException: ClassNotFoundException when unmarshalling:
at android.os.Parcel.readParcelableCreator(Parcel.java:2871)
at android.os.Parcel.readParcelable(Parcel.java:2797)
at com.rey.material.app.Dialog$Builder.(Dialog.java:1539)
at com.rey.material.app.DatePickerDialog$Builder.(DatePickerDialog.java:827)
at com.rey.material.app.DatePickerDialog$Builder$1.createFromParcel(DatePickerDialog.java:858)
at com.rey.material.app.DatePickerDialog$Builder$1.createFromParcel(DatePickerDialog.java:856)
at android.os.Parcel.readParcelable(Parcel.java:2806)
at android.os.Parcel.readValue(Parcel.java:2700)
at android.os.Parcel.readArrayMapInternal(Parcel.java:3067)
at android.os.BaseBundle.unparcel(BaseBundle.java:257)
at android.os.Bundle.getSparseParcelableArray(Bundle.java:958)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1325)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1740)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1809)
at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3217)
at android.support.v4.app.FragmentManagerImpl.dispatchCreate(FragmentManager.java:3166)
at android.support.v4.app.FragmentController.dispatchCreate(FragmentController.java:181)
at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:319)
at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:84)
at com.driivz.mobile.android.core.inject.InjectedActivity.onCreate(InjectedActivity.java:45)
at com.driivz.mobile.android.core.activity.ApiAwareActionBarActivity.onCreate(ApiAwareActionBarActivity.java:64)
at com.driivz.mobile.android.driver.activity.BillingTransactionPageActivity.onCreate(BillingTransactionPageActivity.java:135)
at android.app.Activity.performCreate(Activity.java:7183)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2908)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3030)
at android.app.ActivityThread.-wrap11(Unknown Source)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6938)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
Seems like the solution here is to use the Application class loader, and not let Android take the default by assigning getClass().getClassLoader() instead of passing null to write, or adding to extra ClassLoader on Bundle.
@liraz, thanks for sharing. I am not sure I understand what you are referring though. Can you be more specific about the solution you mention? A code sample or a broader, more detailed explanation would be much appreciated.
hey @inteist
The class that the system is looking for is "CharSequence" and this class should be available without setting the ClassLoader in Bundle. But in this specific situation Bundle uses a ClassLoader that is unable to load "CharSequence"
This is extremely rare - and introducing a fix here might create more issues. i suggest to wait on this one. for now we reported this crash as system level crash - and we will follow it's behavior.