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í:
- Parcel.readException pasando un objeto al servicio remoto
- Android Parcelable Problema con array
- Pon el Objeto como intención para la siguiente actividad
- Android: ¿Cómo pasar el objeto Parcelable a la intención y el uso getParcelable método de paquete?
- ¿Cómo cambiar el contenido del fragmento al transferir datos del fragmento después de buscar en RecyclerView?
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.
- Clase abstracta como parcelable
- Cómo hacer una clase con objetos anidados Parcelable
- Hacer ArrayList de objetos personalizados parcelable
- ¿Cómo leer y escribir Enum en paquete en Android?
- Edición Parcelable de Android
- Obtención de Unmarshalling código de tipo desconocido al volver a parcelar el mismo objeto
- Paquete interior parcelable que se agrega a la parcela
- Android Class Parcelable con ArrayList
ArrayList<ParcelableObject> pointsExtra = new ArrayList<ParcelableObject>(); intent.putExtra("", pointsExtra);
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.