Escribir matrices de Parcelables sobre una parcela en Android
-
19-09-2019 - |
Pregunta
Estoy tratando de escribir una serie de objetos que implementan parcelable usando writeParcelableArray .
Los objetos que estoy tratando de escribir se definen (como era de esperar) como:
public class Arrival implements Parcelable {
/* All the right stuff in here... this class compiles and acts fine. */
}
Y yo estoy tratando de escribirlos en un 'paquete' con:
@Override
public void writeToParcel(Parcel dest, int flags) {
Arrival[] a;
/* some stuff to populate "a" */
dest.writeParcelableArray(a, 0);
}
Cuando Eclipse intenta compilar este me sale el error:
desajuste Bound: El método genérico writeParcelableArray (T [], int) de tipo Paquete no es aplicable para el argumentos (llegada [], int). los Tipo inferido de llegada no es válida sustituto para el parámetro acotado
Estoy totalmente de no entiendo este mensaje de error. Parcelable
es una interfaz (no una clase) por lo que no puede extenderlo. Alguien tiene alguna idea?
ACTUALIZACIÓN: Estoy teniendo básicamente el mismo problema al poner ArrayList
de Parcelable
s en un Intent
:
Intent i = new Intent();
i.putParcelableArrayListExtra("locations", (ArrayList<Location>) locations);
rendimientos:
El método putParcelableArrayListExtra (String, ArrayList Extiende parcelable>) en el Intención tipo no es aplicable para los argumentos (String, ArrayList
)
Esto puede ser porque Location
era la clase que estaba trabajando anteriormente (que envuelve los Arrival
s), pero yo no lo creo.
Solución 2
Resulta que sólo me quería construir una matriz de Parcelables. Para utilizar el ejemplo de la pregunta:
@Override
public void writeToParcel(Parcel dest, int flags) {
Parcelable[] a;
/*
some stuff to populate "a" with Arrival
objects (which implements Parcelable)
*/
dest.writeParcelableArray(a, 0);
}
Otros consejos
En realidad, puede ampliar una interfaz, y parece que lo que necesita hacer precisamente eso. El parámetro genéricos en writeParcelableArray está pidiendo una interfaz extendida (no la propia interfaz). Trate de crear una interfaz MyParcelable extiende parcelable. Entonces declarar su matriz mediante la interfaz, pero la impl debe ser su llegada se extiende MyParcelable.
Sé que el problema está resuelto, pero mi solución fue otra de modo que lo pongo aquí: en mi caso Eclipse importa automáticamente paquete incorrecto debido nombres clases abiguity (algunos dom.Comment en lugar de mi clase de comentario)