***Error关于为android中的类编写Parcelable
Posted
技术标签:
【中文标题】***Error关于为android中的类编写Parcelable【英文标题】:***Error on writing Parcelable for a class in android 【发布时间】:2018-01-22 02:22:53 【问题描述】:我有一个名为 Student 的班级。在这个类中,我有一个相同类的对象字段(即学生类)。当我将这个类对象作为 Parcelable 发送到我的应用程序的另一个组件时。它抛出 ***Error。
所以我的问题是如何使包含同一类字段的此类类的 Parcelable。 这是我的代码
import android.os.Parcel;
import android.os.Parcelable;
import java.util.ArrayList;
public class Chapter implements Parcelable
private String chapterId;
private String chapterNumber;
private String chapterName;
private String src;
private int startTime;
private int endTime;
private Chapter parentChapter;
private ArrayList<Chapter> chapterList;
public Chapter()
protected Chapter(Parcel in)
chapterId = in.readString();
chapterNumber = in.readString();
chapterName = in.readString();
src = in.readString();
startTime = in.readInt();
endTime = in.readInt();
parentChapter = in.readParcelable(Chapter.class.getClassLoader());
chapterList = in.createTypedArrayList(Chapter.CREATOR);
public static final Creator<Chapter> CREATOR = new Creator<Chapter>()
@Override
public Chapter createFromParcel(Parcel in)
return new Chapter(in);
@Override
public Chapter[] newArray(int size)
return new Chapter[size];
;
String getChapterName()
return chapterName;
void setChapterName(String chapterName)
this.chapterName = chapterName;
public String getSrc()
return src;
public void setSrc(String src)
this.src = src;
void setChapterNumber(String chapterNumber)
this.chapterNumber = chapterNumber;
void setChapterId(String chapterId)
this.chapterId = chapterId;
ArrayList<Chapter> getChapterList()
return chapterList;
void setChapterList(ArrayList<Chapter> chapterList)
this.chapterList = chapterList;
public int getStartTime()
return startTime;
public void setStartTime(int startTime)
this.startTime = startTime;
void setEndTime(int endTime)
this.endTime = endTime;
public Chapter getParentChapter()
return parentChapter;
public void setParentChapter(Chapter parentChapter)
this.parentChapter = parentChapter;
@Override
public int describeContents()
return 0;
@Override
public void writeToParcel(Parcel dest, int flags)
dest.writeString(chapterId);
dest.writeString(chapterNumber);
dest.writeString(chapterName);
dest.writeString(src);
dest.writeInt(startTime);
dest.writeInt(endTime);
dest.writeParcelable(parentChapter, flags);
dest.writeTypedList(chapterList);
【问题讨论】:
***.com/questions/36492256/… 【参考方案1】:删除dest.writeParcelable(parentChapter, flags);
添加
chapterList = in.createTypedArrayList(Chapter.CREATOR);
for( Chapter c : chapterList )
c.setParentChapter(this);
【讨论】:
以上是关于***Error关于为android中的类编写Parcelable的主要内容,如果未能解决你的问题,请参考以下文章
1. 用C++或Java写一个关于堆栈的类描述,并为堆栈的压栈(push)和出栈(pop)操作编写方法