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