No se puede poner más en una intención

Estoy tratando de poner un objeto como extra en una intención. La clase del objeto fue creada por mí, así que la hice Parcelable.

public class NavigationDataSet implements Parcelable { private ArrayList<Placemark> placemarks = new ArrayList<Placemark>(); private Placemark currentPlacemark; private Placemark routePlacemark; @Override public int describeContents() { // TODO Auto-generated method stub return 0; } @Override public void writeToParcel(Parcel out, int flags) { // TODO Auto-generated method stub out.writeList(placemarks); out.writeValue(currentPlacemark); out.writeValue(routePlacemark); } // this is used to regenerate your object. All Parcelables must have a CREATOR that implements these two methods public static final Parcelable.Creator<NavigationDataSet> CREATOR = new Parcelable.Creator<NavigationDataSet>() { public NavigationDataSet createFromParcel(Parcel in) { return new NavigationDataSet(in); } public NavigationDataSet[] newArray(int size) { return new NavigationDataSet[size]; } }; // example constructor that takes a Parcel and gives you an object populated with it's values private NavigationDataSet(Parcel in) { in.readTypedList(placemarks, Placemark.CREATOR); this.currentPlacemark = in.readParcelable((ClassLoader) Placemark.CREATOR); this.routePlacemark = in.readParcelable(Placemark.class.getClassLoader()); } } 

En la Actividad, declaré la variable así:

 private List<NavigationDataSet> ds; 

Y la creación intencional:

 public static Intent mapIntent(Context context){ Intent i = new Intent(context, mapsView.class); i.putExtra("NavSet", ds); return i; } 

La variable ds se inicializa en un AsyncTask que se ejecuta en el método onCreate. Y tengo un error de precompilación en la instrucción putExtra:

No se puede hacer una referencia estática al campo no estático ds

Pero aquí http://developer.android.com/reference/android/content/Intent.html no dice que tiene que ser una variable estática.

Y si lo cambio a estático, dice:

El método putExtra (String, boolean) en el tipo Intent no es aplicable para los argumentos (String, List)

Pero no estoy pasando un booleano, es un Parcelable !!! ¿Entonces qué hago? Realmente no entiendo la forma en que esto está funcionando.

 ArrayList<ParcelableObject> pointsExtra = new ArrayList<ParcelableObject>(); intent.putExtra("", pointsExtra); 

http://developer.android.com/reference/android/content/Intent.html#putParcelableArrayListExtra%28java.lang.String

En su caso, ds no es una variable estática, por lo tanto, no se puede hacer referencia a ella en un método estático. Hacer ds estático, pase es como un argumento a su función mapIntent, o hacer su mapIntent función no estática.

  • Android Parcelable y Serializable
  • Herencia parcelable: clase abstracta - ¿QUÉ CREADOR?
  • Parcelable y herencia
  • Beneficio de usar Parcelable en lugar de serializar objetos
  • La API de reproductor de YouTube para Android lanza "BadParcelableException ClaseNotFoundException al desmarcar: asc" con la nueva versión de YouTube
  • ¿Por qué utilizar parcelable cuando se puede realizar la misma tarea utilizando variables estáticas?
  • Cómo escribir y leer org.joda.time.Date en la clase Parcelable
  • Android BadParcelableException sólo con apk firmado
  • Cómo en Android pasar un objeto a un nuevo propósito
  • ¿Cómo pasar el objeto Parcelable del niño a la actividad de los padres?
  • BadParcelableException - Error de BroadcastReceiver intentado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.