Как получить из Parcel CharSequence, сохраненный с помощью TextUtils.writeToParcel(…)?

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

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

12
задан gdecaso 28 March 2012 в 21:38
поделиться