Как написать SpannableString в посылку?


В моем приложении у меня есть диалог, который состоит из нескольких SpannableString объектов. Поскольку это диалог, Мне нужно иметь возможность хранить его, когда пользователь покидает приложение и возвращается к нему позже.

Но проблема в том, как я могу записать SpannableString в посылку?

3 4

3 ответа:

Я действительно нашел способ сделать это, используя уже существующие функции, хотя я не уверен, работает ли это для всех типов промежутков или только для тех, которые я использую.

Внутри написать посылку methos вы должны добавить

@Override
public void writeToParcel(Parcel dest, int flags) {
    TextUtils.writeToParcel(mSpannableString, dest, flags);
}

И далее для извлечения SpannableString из пакета вы должны использовать этот

public CustomConstructor(Parcel parcel) {
    mSpannableString = (SpannableString) TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(parcel);
}

Использовать TextUtils.writeToParcel() метод

, поддерживающих пролеты в TextUtils

TextUtils line 555-604 public static final int ALIGMENT_SPAN = 1; ......

SpannableString не является parceable, поэтому вы не сможете сохранить их и воссоздать с помощью участков. Вместо этого вы можете сохранить текст и промежутки отдельно. Текст и промежутки могут быть разделены, поэтому они будут в порядке, когда вы их воссоздадите.