0
上我在logcat的NotSerializableException Parcelable对象
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];
}
};
}
你的意思是添加公共类StyledText实现Parcelable,Serializable? – TpoM6oH
是的,这正是我的意思。 –
但是为什么它需要StyledText在我使用时可序列化。 writeParcelable()? – TpoM6oH