Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

Если кто-то заинтересован, я нашел ответ в этом сообщении.

Правильный способ извлечения CharSequence, который был сохранен в Parcel с помощью TextUtils.writeToParcel(...), - это

cs = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in);