Tôi muốn có thể gửi văn bản được định dạng (tức là, văn bản có định dạng kéo dài) từ một trong các hoạt động ứng dụng của tôi sang một hoạt động khác. Những trường hợp CharSequence
này sống sâu bên trong một số loại Parcelable
mà tôi đã tạo.Làm cách nào để truy xuất từ Parcel a CharSequence đã được lưu bằng TextUtils.writeToParcel (...)?
Ví dụ, khi marshalling một trong những loại mang định dạng CharSequence
s tôi sử dụng TextUtils.writeToParcel
như sau:
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 ... */
}
Vấn đề là tôi không biết làm thế nào để lấy CharSequence
từ Parcel
trong tôi nhà xây dựng riêng.
Sau đây không không công việc:
private HoldsCharSequence(Parcel in) {
cs = (CharSequence) in.readValue(CharSequence.class.getClassLoader());
}
tôi nhận được lỗi sau:
android.os.BadParcelableException: ClassNotFoundException when unmarshalling
Hai nhiều điều: 1. Tôi đã thành công thực hiện tùy chỉnh của riêng tôi Parcelable
đối tượng, vấn đề là với CharSequence
s nói riêng. 2. Tôi biết rằng TextUtils.writeToParcel
sẽ thực hiện công việc tốt nhất để lưu định dạng văn bản, tôi có thể sống với điều đó.
Hãy thử cs = in.readValue (getClass() getClassLoader().); – yorkw
@yorkw, cách tiếp cận của bạn mang lại kết quả tương tự ('ClassNotFoundException'). – gdecaso