我想要能够发送格式化的文本(即,文本的格式跨度)从我的一个应用活动到另一个。这些CharSequence实例存在于我创建的一些Parcelable类型中。
例如,在编组带有格式化CharSequence的类型之一时,我使用TextUtils.writeToParcel,如下所示:
public class HoldsCharSequence {
/* some formatted string that uses basic spans (e.g., ForegroundColorSpan) */
private CharSequence cs;
public void writeToParcel(Parcel out, int flags) {
TextUtils.writeToParcel(cs, out, 0);
}
/* ... rest of the code ... */
}问题是,我不知道如何在私有构造函数中从CharSequence中检索Parcel。
下面的不适用于:
private HoldsCharSequence(Parcel in) {
cs = (CharSequence) in.readValue(CharSequence.class.getClassLoader());
}我得到以下错误:
android.os.BadParcelableException: ClassNotFoundException when unmarshalling还有两件事: 1.我已经成功地实现了我自己的自定义Parcelable对象,特别是CharSequence的问题。2.我知道TextUtils.writeToParcel会尽最大努力保存文本格式,我可以接受这一点。
发布于 2012-03-29 14:10:07
如果其他人感兴趣,我在this post中找到了答案。
使用CharSequence检索存储在Parcel中的TextUtils.writeToParcel(...)的正确方法是
cs = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in);https://stackoverflow.com/questions/9916044
复制相似问题