Desidero essere in grado di inviare testo formattato (ad esempio, testo con estensione di formato) da una delle attività della mia app a un altro. Queste istanze CharSequence
vivono in profondità all'interno di alcuni tipi di Parcelable
che ho creato.Come posso recuperare da un pacco un oggetto CharSequence salvato con TextUtils.writeToParcel (...)?
Per esempio, quando marshalling uno dei tipi che porta formattati CharSequence
s che uso TextUtils.writeToParcel
come segue:
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 ... */
}
Il problema è che non so come recuperare il CharSequence
dal Parcel
nel mio costruttore privato.
Quanto segue non lavoro:
private HoldsCharSequence(Parcel in) {
cs = (CharSequence) in.readValue(CharSequence.class.getClassLoader());
}
ottengo il seguente errore:
android.os.BadParcelableException: ClassNotFoundException when unmarshalling
Altri due cose: 1. ho già successo implementato il mio personalizzato Parcelable
oggetti, il problema è in particolare con CharSequence
s. 2. So che lo TextUtils.writeToParcel
farà il massimo sforzo per salvare il formato di testo, posso conviverci.
Prova cs = in.readValue (getClass() getClassLoader().); – yorkw
@yorkw, il tuo approccio produce lo stesso risultato ('ClassNotFoundException'). – gdecaso