Android - MyParceableClassOuter 内的 MyParceableClassInner[]

Android - MyParceableClassInner[] inside MyParceableClassOuter

我试图在活动之间传递一个自定义 parceable class,其中包含另一个自定义 parceable class 的数组。我试着听从建议 here,但它对我不起作用。

这是内部 class,单独传递时它工作正常:

import android.os.Parcel;
import android.os.Parcelable;

public class EntryImage implements Parcelable {
public int imageId;
public int entryid_id;
public String url;
public int height;


public EntryImage(int imageId, int entryid_id, String url, int height) {
    this.imageId = imageId;
    this.entryid_id = entryid_id;
    this.url = url;
    this.height = height;
}


public EntryImage(Parcel in) {
    readFromParcel(in);
}

@Override
public int describeContents() {
    return 0;
}

@Override
public void writeToParcel(Parcel parcel, int flags) {
    parcel.writeInt(imageId);
    parcel.writeInt(entryid_id);
    parcel.writeString(url);
    parcel.writeInt(height);
}

private void readFromParcel(Parcel in) {
    imageId = in.readInt();
    entryid_id = in.readInt();
    url = in.readString();
    height = in.readInt();
}

public static final Parcelable.Creator<EntryImage> CREATOR = new Parcelable.Creator<EntryImage>() {
    public EntryImage createFromParcel(Parcel in) {
        return new EntryImage(in);
    }
    public EntryImage[] newArray(int size) {
        return new EntryImage[size];
    }
};

}

这是外层class。问题出在 readFrom 和 writeToParcel 的最后几行:

import android.os.Parcel;
import android.os.Parcelable;
import java.util.Arrays;

public class Entry implements Parcelable {
public int entryId;
public String name;
public EntryImage[] images;


public Entry(int entryId, String name, EntryImage[] images) {
    this.entryId = entryId;
    this.name = name;
    this.images = images;

}


public Entry(Parcel in) {
    readFromParcel(in);
}

public EntryImage getEntryImage (int asdf) {
    return images[asdf];
}


@Override
public int describeContents() {
    return 0;
}
public void writeToParcel(Parcel parcel, int flags) {
    parcel.writeInt(entryId);
    parcel.writeString(name);
    parcel.writeParcelableArray(images, flags);
}
private void readFromParcel(Parcel in) {
    entryId = in.readInt();
    name = in.readString();
    //images = in.readTypedArray(EntryImage[].class.getClassLoader());
    Parcelable[] parcelableArray = in.readParcelableArray(EntryImage.class.getClassLoader());
    EntryImage[] images = null;
    if (parcelableArray != null) {
        images = Arrays.copyOf(parcelableArray, parcelableArray.length, EntryImage[].class);
    }
}
public static final Parcelable.Creator<Entry> CREATOR = new Parcelable.Creator<Entry>() {
    public Entry createFromParcel(Parcel in) {
        return new Entry(in);
    }
    public Entry[] newArray(int size) {
        return new Entry[size];
    }
};
}

Entry.readFromParcel

中的行
    EntryImage[] images = null;

应该是

    images = null;