Android 将可包裹对象发送到其他活动

Android 将可包裹对象发送到其他活动,android,arraylist,parcelable,Android,Arraylist,Parcelable,我上了三节课。系列、季节和剧集。 Series类得到了一个季节对象列表,而Season类得到了一个插曲对象列表 我想将Series对象发送到其他类似的活动 Intent intent = new Intent(context, OtherActivity.class); intent.putExtra("series", (Parcelable)seriesObject); 但我有一个空点异常 下面是实现Parcelable的类 系列类别: public class Series implem

我上了三节课。系列、季节和剧集。 Series类得到了一个季节对象列表,而Season类得到了一个插曲对象列表

我想将Series对象发送到其他类似的活动

Intent intent = new Intent(context, OtherActivity.class);
intent.putExtra("series", (Parcelable)seriesObject);
但我有一个空点异常

下面是实现Parcelable的类

系列类别:

public class Series implements Parcelable {

private int seasonCount;
public ArrayList<Season>seasons;
private String seriesName;
private int lastSeenSeason = 0;
private int lastSeenEpisode = 0;

public int describeContents() {
    return 0;
}

public void writeToParcel(Parcel dest, int flags) {
    dest.writeInt(seasonCount);
    dest.writeTypedList(seasons);
    dest.writeString(seriesName);
    dest.writeInt(lastSeenSeason);
    dest.writeInt(lastSeenEpisode);
}

private Series(Parcel in){
    seasonCount = in.readInt();
    in.readTypedList(seasons, Season.CREATOR);
    seriesName = in.readString();
    lastSeenSeason = in.readInt();
    lastSeenEpisode = in.readInt();
}

public static final Parcelable.Creator<Series> CREATOR = new Parcelable.Creator<Series>() {
    public Series createFromParcel(Parcel in) {
        return new Series(in);
    }
    public Series[] newArray(int size) {
        return new Series[size];
    }
};
公共类系列实现可包裹{
私人帐户;
公共场所;
私有字符串序列名;
private int lastSeenSeason=0;
private int lastSeenEpisode=0;
公共int描述内容(){
返回0;
}
公共无效写入包裹(包裹目的地,内部标志){
目的地记录(季节计数);
目的地记录(季节);
目的地书面记录(序列名称);
目的写入(上一季度);
目的地写入(最后一次参见NEPISODE);
}
私人系列(包裹内){
季节计数=in.readInt();
in.readTypedList(季节、季节、创建者);
seriesName=in.readString();
lastSeenSeason=in.readInt();
lastSeenEpisode=in.readInt();
}
public static final Parcelable.Creator=新建Parcelable.Creator(){
公共系列createFromParcel(地块中){
返回新系列(in);
}
公共系列[]新数组(整数大小){
返回新系列[大小];
}
};
季班:

public class Season implements Parcelable{

private int seasonNo;
private int episodeCount;
public ArrayList<Episode> episodes;


public int describeContents() {
    return 0;
}

public void writeToParcel(Parcel dest, int flags) {
    dest.writeInt(seasonNo);
    dest.writeInt(episodeCount);
    dest.writeTypedList(episodes);
}

private Season(Parcel in){
    this.seasonNo = in.readInt();
    episodeCount = in.readInt();
    in.readTypedList(episodes, Episode.CREATOR);
}

public static final Parcelable.Creator<Season> CREATOR = new Parcelable.Creator<Season>() {
    public Season createFromParcel(Parcel in) {
        return new Season(in);
    }
    public Season[] newArray(int size) {
        return new Season[size];
    }
};
public类季节实现可包裹{
私家车号码;
私有内幕式计数;
公共ArrayList剧集;
公共int描述内容(){
返回0;
}
公共无效写入包裹(包裹目的地,内部标志){
目的地记录(季节编号);
目的写入(情节计数);
目的地编写目录(集);
}
私人季节(包裹内){
this.seaseno=in.readInt();
epiodecount=in.readInt();
in.readTypedList(集,集.创建者);
}
public static final Parcelable.Creator=新建Parcelable.Creator(){
公共季节createFromParcel(包裹中){
回归新赛季(年);
}
公共季节[]新阵列(整数大小){
返回新的季节[大小];
}
};
还有插曲课:

public class Episode implements Parcelable{

private int episodeNo;
private boolean episodeSeen;


public int describeContents() {
    return 0;
}

@Override
public void writeToParcel(Parcel dest, int flags) {
    dest.writeInt(episodeNo);
    dest.writeByte((byte) (episodeSeen ? 1 : 0));
}

private Episode(Parcel in){
    episodeNo = in.readInt();
    episodeSeen = in.readByte() != 0;
}


public static final Parcelable.Creator<Episode> CREATOR = new Parcelable.Creator<Episode>() {
    public Episode createFromParcel(Parcel in) {
        return new Episode(in);
    }
    public Episode[] newArray(int size) {
        return new Episode[size];
    }
};
公共类插曲实现可包裹{
第二幕;
私有布尔情节;
公共int描述内容(){
返回0;
}
@凌驾
公共无效写入包裹(包裹目的地,内部标志){
目的地书面记录(书信号);
dest.writeByte((字节)(字母1:0));
}
私人插曲(包裹内){
epiodeno=in.readInt();
eposodeseen=in.readByte()!=0;
}
public static final Parcelable.Creator=新建Parcelable.Creator(){
公共事件createFromParcel(地块中){
返回新插曲(中);
}
公共插曲[]新数组(整数大小){
返回新集[大小];
}
};

您应该初始化阵列:

public ArrayList<Episode> episodes = new ArrayList<Episode>();
public ArrayList<Season> seasons = new ArrayList<Season>();
publicArrayList剧集=新建ArrayList();
public ArrayList seasures=new ArrayList();

否则,
readTypedList
将失败。

您应该发布堆栈跟踪。但是,这一行可能会导致:in.readTypedList(seasons,seasons.CREATOR);seasons当时还没有初始化。我在公共构造函数中初始化了列表,所以我没有考虑这个thx!