Я хочу иметь возможность отправлять форматированный текст (т. е. текст с диапазонами форматов) из одного действия моего приложения в другое. Эти экземпляры CharSequence
живут глубоко внутри некоторых Parcelable
типов, которые я создал.
Например, при сортировке одного из типов, который содержит форматированные CharSequence
s, я использую 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
сделает все возможное для сохранения текстового формата, я могу с этим смириться.