我在logcat中得到了这个错误
java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.mygame.GameFeedItem)
...
Caused by: java.io.NotSerializableException: com.mygame.StyledText
似乎StyledText类不可序列化。我在它上面实现了Parcelable,还不够吗?
一些细节:
GameFeedItem扩展了FeedItem类,它是Parcelable并包含StyledText类型的字段。 GameFeedItem不向类添加任何数据,只是一些逻辑。
public class FeedItem implements Parcelable
{
public StyledText mainText;
...
@Override
public void writeToParcel(Parcel dest, int flags)
{
dest.writeParcelable(mainText, flags);
...
}
}
StyledText类如下:
public class StyledText implements Parcelable
{
private static final String TEXT_STYLES_DELIMITER = ",";
public static final int NO_ID = -1;
public Long _id;
public String text;
public String textStyles;
public StyledText(String text, List<TextStyle> textStyles)
{
this.text = text;
setTextStyles(textStyles);
}
public StyledText(Parcel in)
{
long id = in.readLong();
this._id = id == NO_ID ? null : id;
this.text = in.readString();
this.textStyles = in.readString();
}
@Override
public int describeContents()
{
return 0;
}
@Override
public void writeToParcel(@NonNull Parcel dest, int flags)
{
dest.writeLong(_id == null ? NO_ID : _id);
dest.writeString(text);
dest.writeString(textStyles);
}
public static final Parcelable.Creator CREATOR = new Parcelable.Creator()
{
public StyledText createFromParcel(@NonNull Parcel in)
{
return new StyledText(in);
}
@NonNull
public StyledText[] newArray(int size)
{
return new StyledText[size];
}
};
}
答案 0 :(得分:0)
您需要实现Serializable。