你有A类实现Parcelable并且包含类{B类的List
个对象。
实现Pracelable并包含A类字段的B类。
我为每个人实现了Parcelable方法,我获得了Parcelable的write
方法的堆栈溢出,这些方法接缝正常,因为每个类都在循环中调用另一个。
有没有办法避免这种情况?
用户类:
public class User implements Parcelable {
private String mName;
private List<Collection> mCollections;
...
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeString(mName);
out.writeList(mCollections); // Line 76
}
...
集合类
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeString(mTitle);
out.writeInt(mCounter);
out.writeSerializable(mDateRecieved);
out.writeParcelable(mUser, flags); //Line 205
堆栈追踪:
02-02 17:44:07.807 5113-5113/com.example.crysis473.cm E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.StackOverflowError
at android.os.Parcel.writeString(Parcel.java:513)
at android.os.Parcel.writeParcelable(Parcel.java:1249)
at com.example.crysis473.cm.Collection.writeToParcel(Collection.java:205)
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.example.crysis473.cm.User.writeToParcel(User.java:76)
at android.os.Parcel.writeParcelable(Parcel.java:1254)
at com.example.crysis473.cm.Collection.writeToParcel(Collection.java:205)
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.example.crysis473.cm.User.writeToParcel(User.java:76)
at android.os.Parcel.writeParcelable(Parcel.java:1254)
at com.example.crysis473.cm.Collection.writeToParcel(Collection.java:205)
at android.os.Parcel.writeParcelable(Parcel.java:1254)
..........