如何从Parcel中检索使用TextUtils.writeToParcel(...)保存的CharSequence?

gde*_*aso 12 android parcelable

我希望能够将我的应用程序活动之一的格式化文本(即格式跨度的文本)发送到另一个.这些CharSequence实例深入Parcelable到我创建的某些类型中.

例如,当编组其中一个带有格式化CharSequences 的类型时,我使用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 ... */
}
Run Code Online (Sandbox Code Playgroud)

问题是我不知道如何CharSequenceParcel我的私有构造函数中检索.

以下就不能正常工作:

private HoldsCharSequence(Parcel in) {
    cs = (CharSequence) in.readValue(CharSequence.class.getClassLoader());
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

android.os.BadParcelableException: ClassNotFoundException when unmarshalling
Run Code Online (Sandbox Code Playgroud)

还有两件事:1.我已经成功实现了自己的自定义Parcelable对象,CharSequence特别是问题.2.我知道TextUtils.writeToParcel在保存文本格式方面会做出最大努力,我可以忍受.

gde*_*aso 35

如果有其他人感兴趣,我在这篇文章中找到了答案.

检索CharSequence存储在Parcel使用中的s 的正确方法TextUtils.writeToParcel(...)

cs = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in);
Run Code Online (Sandbox Code Playgroud)