2010-09-21 24 views
2

J'essaye de rendre la tâche parcelable pour la mettre dans un paquet pour passer de mon service à l'activité mais j'ai un peu de mal à travailler avec l'ArrayList de mon type personnalisé.Erreur de classe Make Parcelable

Tâche:

@Override 
public int describeContents() { 
    // TODO Auto-generated method stub 
    return 0; 
} 

@Override 
public void writeToParcel(Parcel prc, int arg1) { 
    // TODO Auto-generated method stub 
    prc.writeInt(id); 
    prc.writeString(timeStamp_string); 
    prc.writeString(timeToComplete_string); 
    prc.writeTypedArray(resources.toArray(), PARCELABLE_WRITE_RETURN_VALUE); 
} 

ressources:

@Override 
public int describeContents() { 
    // TODO Auto-generated method stub 
    return 0; 
} 

@Override 
public void writeToParcel(Parcel prc, int flags) { 
    // TODO Auto-generated method stub 
    prc.writeInt(id); 
    prc.writeString(timeStamp_string); 
    prc.writeString(resourceType); 
    prc.writeString(dataType); 
    prc.writeString(value); 
    prc.writeInt(taskId); 
} 

Il me donne une erreur sur la fonction prc.writeTypedArray intérieur tâche:

Bound mismatch: The generic method writeTypedArray(T[], int) of type Parcel is not applicable for the arguments (Object[], int). The inferred type Object is not a valid substitute for the bounded parameter <T extends Parcelable> 

Si des ressources met actuellement en œuvre Parcelable je Je ne vois pas où est le problème.

Éditer: JE CROIS QUE JE FIXE CETTE PARTIE. J'ai utilisé .writeParcelableList() INSTEAD. QUELQU'UN PEUT CONFIRMER QUE CELA PEUT FONCTIONNER? LA QUESTION CI-DESSOUS EST TOUJOURS VALIDE.

Lorsque la tâche est lue à partir de l'intention par l'activité, j'ai besoin de faire un peu de calcul pour remplir d'autres membres de données. Quelle fonction est appelée là que je peux implémenter pour faire le calcul? Est-ce readFromParcel (...) ou le constructeur qui prend en paramètre Parcelable?

Merci

Répondre

3

toArray() retourne un type de Object[], ce qui est la raison pour laquelle vous obtenez:

objet ne remplace pas valide pour le paramètre borné

objet ne couvre pas Parcelable. Vous devez lancer l'appel toArray():

(Resources[])resources.toArray() 

Comme vous l'avez dit, puisque les ressources met en œuvre Parcelable, cela devrait se débarrasser de votre exception.