Raczej prosty scenariusz naprawdę, ale nie mogłem znaleźć nic związanego z Google tak tu idzie:android parcelable przedstawieniu innego parcelable kołową zależność
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);
(...)
}
}
To nieuchronnie pętli i przepełnienie stosu.
Moje pytanie: Jak mam sobie radzić z sytuacją, w której muszę przekazać przedmiot powyższych typów do nowego działania.
(Dla CommonsWare) Rzeczywiste wdrożenie wydaje się nie sprawdzać i unikać zależności cyklicznych. StackTrace z ClassNames zastąpione wyżej nazwami:
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)
Skończyło się na wprowadzeniu numeru 2. – Skod