Domanda

Ho un problema con l'analisi di una Parcelable attraverso una Intent.

creo Parcelable usando

Intent data = new Intent();
data.putExtra(ShoppingListAdapter.parcelName, la);
setResult(Activity.RESULT_OK, data);

lo ricevo nella onActivityResult:

Parcelable myData = data.getParcelableExtra(ShoppingListAdapter.parcelName);

Poi passare ad un'altra attività utilizzando:

Intent myIntent = new Intent(this,Class.class);
myIntent.putExtra("myData", myData);
startActivityForResult(myIntent, RESULT);

Il mio Parcelable ha un altro all'interno Parcelable quale scrivo e leggo uisng:

list = in.readParcelable(null);

Ho provato con diversi caricatori di classi, da ClassLoader.getSystemLoader () per MyClass.class.getClassLoader (), ma ancora ottengo un'eccezione di runtime:

06-12 21:13:04.940: ERROR/AndroidRuntime(29962): Caused by: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: 

E 'il mio pacco danneggiato da qualche parte prima di questo o sto leggendo sbagliato?

Alex

È stato utile?

Soluzione 2

Come è stato sottolineato che questo era un approccio errato da usare. Quindi, anche se non l'ho risolto, c'è un modo migliore di fare la stessa cosa. Quindi prendere in considerazione al posto

Come per dichiarare le variabili globali in Android?

Anche se qualcuno ha qualche idea per la risposta alla domanda iniziale si prega di inviare. Può capitare qualche altra parte per qualcun altro.

Alex

Altri suggerimenti

ho avuto quel problema troppo, è una cosa stupida. Il ordine e il numero dei metodi su writeToParcel e readToParcel dovrebbe essere lo stesso e con le stesse variabili.

I media:

public void writeToParcel(Parcel dest, int flags) {
   dest.writeString(title);
   dest.writeParcelable((Parcelable)this.getLocation(), flags);
   dest.writeString(value);  
}

deve essere nello stesso ordine come:

private void readFromParcel(Parcel in){

  this.setTitle(in.readString());
  this.setLocation((Location)in.readParcelable(android.location.Location.class.getClassLoader()));
  this.setValue(in.readString());
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top