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)
问题是我不知道如何CharSequence从Parcel我的私有构造函数中检索.
以下就不能正常工作:
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)
| 归档时间: |
|
| 查看次数: |
2567 次 |
| 最近记录: |