Question

Je suis en train d'écrire un tableau d'objets qui implémentent Parcelable en utilisant de writeParcelableArray .

Les objets que je suis en train d'écrire sont définis (comme on pouvait s'y attendre) que:

public class Arrival implements Parcelable {
    /* All the right stuff in here... this class compiles and acts fine. */
}

Et je suis en train de les écrire dans un `colis » avec:

@Override
public void writeToParcel(Parcel dest, int flags) {
    Arrival[] a;
    /* some stuff to populate "a" */
    dest.writeParcelableArray(a, 0);
}

Quand Eclipse tente de compiler ce que je reçois l'erreur:

  

non-concordance Bound: La méthode générique   writeParcelableArray (T [], int) de type   Parcelle n'est pas applicable pour la   arguments (Arrivée [], int). le   type inféré arrivée n'est pas valide   remplacer le paramètre borné   

Je complètement ne comprends pas ce message d'erreur. Parcelable est une interface (pas une classe) de sorte que vous ne pouvez pas l'étendre. Quelqu'un at-il des idées?

Mise à jour: J'ai fondamentalement le même problème lors de mettre ArrayList de Parcelables dans un Intent:

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

on obtient:

  

La méthode putParcelableArrayListExtra (String, ArrayList ) dans le Intent type n'est pas applicable pour les arguments (String, ArrayList )

Cela peut être parce que Location était la classe que je travaillais sur ci-dessus (qui enveloppe les Arrivals), mais je ne pense pas.

Était-ce utile?

La solution 2

Il se trouve qu'il voulait juste me construire un tableau de Parcelables. Pour utiliser l'exemple de la question:

@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);
}

Autres conseils

En fait, vous pouvez étendre une interface, et il semble que vous devez faire. Le paramètre génériques dans writeParcelableArray demande une interface étendue (et non l'interface elle-même). Essayez de créer une interface MyParcelable étend Parcelable. Puis déclarer votre tableau à l'aide de l'interface, mais le impl devrait être votre arrivée étend MyParcelable.

Je sais que le problème est résolu, mais ma solution a été autre si je poste ici: dans mon cas Eclipse mauvais paquet automatiquement importé en raison de classes de noms abiguity (certains dom.Comment au lieu de ma classe Commentaire)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top