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