Rather a simple script actually, but I could not find anything related to Google, so here:
class ContainerClass implements Parcelable { List<ItemClass> _items; (...) public void writeToParcel( Parcel p, int args ) { p.writeList( _items ); (...) } } class ItemClass implements Parcelable { ContainerClass _containerRef; (...) public void writeToParcel( Parcel p, int args ) { p.writeParcelable( _containerRef ); (...) } }
This will inevitably lead to a loop and stack overflow.
My question is: how should I deal with a situation where I need to pass an object of the above types using a new action.
(For CommonsWare) The original implementation does not seem to check or require circular dependencies. Stacktrace with class names are replaced by the following names:
08-12 10:17:45.233 5590-5590/com.package E/AndroidRuntime: FATAL EXCEPTION: main java.lang.StackOverflowError at com.package.ContainerClass.writeToParcel(ContainerClass.java:139) at android.os.Parcel.writeParcelable(Parcel.java:1254) at com.package.ItemClass.writeToParcel(ItemClass.java:182) at android.os.Parcel.writeParcelable(Parcel.java:1254) at android.os.Parcel.writeValue(Parcel.java:1173) at android.os.Parcel.writeList(Parcel.java:622) at com.package.ContainerClass.writeToParcel(ContainerClass.java:144) at android.os.Parcel.writeParcelable(Parcel.java:1254) at com.package.ItemClass.writeToParcel(ItemClass.java:182) at android.os.Parcel.writeParcelable(Parcel.java:1254) at android.os.Parcel.writeValue(Parcel.java:1173) at android.os.Parcel.writeList(Parcel.java:622)
android loops stack-overflow parcelable chain
Skod
source share