user3645804
user3645804

Reputation: 1

java.lang.RuntimeException: Parcelable encountered IOException writing serializable object

Some instances of my app are getting this error:

java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = for.super)
    at android.os.Parcel.writeSerializable(Parcel.java:1181)
    at android.os.Parcel.writeValue(Parcel.java:1135)
    at android.os.Parcel.writeMapInternal(Parcel.java:493)
    at android.os.Bundle.writeToParcel(Bundle.java:1612)
    at android.os.Parcel.writeBundle(Parcel.java:507)
    at android.support.v4.app.FragmentState.writeToParcel(SourceFile:132)
    at android.os.Parcel.writeTypedArray(Parcel.java:1004)
    at android.support.v4.app.FragmentManagerState.writeToParcel(SourceFile:368)
    at android.os.Parcel.writeParcelable(Parcel.java:1156)
    at android.os.Parcel.writeValue(Parcel.java:1075)
    at android.os.Parcel.writeMapInternal(Parcel.java:493)
    at android.os.Bundle.writeToParcel(Bundle.java:1612)
    at android.os.Parcel.writeBundle(Parcel.java:507)
    at android.support.v4.app.FragmentState.writeToParcel(SourceFile:133)
    at android.os.Parcel.writeTypedArray(Parcel.java:1004)
    at android.support.v4.app.FragmentManagerState.writeToParcel(SourceFile:368)
    at android.os.Parcel.writeParcelable(Parcel.java:1156)
    at android.os.Parcel.writeValue(Parcel.java:1075)
    at android.os.Parcel.writeMapInternal(Parcel.java:493)
    at android.os.Bundle.writeToParcel(Bundle.java:1612)
    at android.os.Parcel.writeBundle(Parcel.java:507)
    at android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:1931)
    at android.app.ActivityThread.handleStopActivity(ActivityThread.java:2866)
    at android.app.ActivityThread.access$900(ActivityThread.java:123)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1164)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:4424)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:817)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
    at dalvik.system.NativeStart.main(Native Method)
Caused by: java.io.NotSerializableException: android.support.v4.app.FragmentManagerImpl
    at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1364)
    at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
    at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:979)
    at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:368)
    at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1074)
    at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404)
    at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
    at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:979)
    at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:368)
    at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1074)
    at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404)
    at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
    at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:979)
    at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:368)
    at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1074)
    at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404)
    at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
    at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:979)
    at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:368)
    at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1074)
    at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404)
    at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
    at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:979)
    at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:368)
    at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1074)
    at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404)
    at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
    at android.os.Parcel.writeSerializable(Parcel.java:1176)
    ... 32 more

I don't know how to replicate this, but looking at the stacktrace it seems happening when the app is getting stopped.

I really don't understand why android is trying to serialize/parcelize my fragments, I've not implemented onSaveInstanceState/onRestoreInstanceState anywhere.

Could someone help me please?

Thanks Luca

Edit: Thanks for your answer. No, i don't have any custom imlementation of any View,

Could be a way of resolving this error, overriding onSaveInstanceState without calling the suoer.onSaveInstanceState ?

Upvotes: 0

Views: 3718

Answers (1)

indivisible
indivisible

Reputation: 5012

From the officail Docs

The default implementation takes care of most of the UI per-instance state for you by calling onSaveInstanceState() on each view in the hierarchy that has an id, and by saving the id of the currently focused view (all of which is restored by the default implementation of onRestoreInstanceState(Bundle)).

Do you have a custom View implementation or extend a base View with new fields and make use of it in your Fragment?

Upvotes: 1

Related Questions