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 Parcelables en un Intent:

Intent i = new Intent();
i.putParcelableArrayListExtra("locations", (ArrayList<Location>) locations);

rendimientos:

  

El método putParcelableArrayListExtra (String, ArrayList ) 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 Arrivals), pero yo no lo creo.

¿Fue útil?

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)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top