Fare errore Classe Parcelable
-
04-10-2019 - |
Domanda
che sto cercando di fare Task Parcelable di mettere in un pacchetto di passare dal mio servizio di attività, ma sto avendo un po 'di lavoro guai con l'ArrayList del mio tipo personalizzato.
Obiettivo:
@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);
}
Resource:
@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);
}
E mi dà un errore sul compito funzione all'interno prc.writeTypedArray:
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>
Se Resources sta attuando Parcelable quindi non vedo dove sia il problema.
Modifica: Credo fisso QUESTA PARTE. HO USATO .writeParcelableList () invece. Qualcuno può confermare che questo dovrebbe funzionare? DOMANDA SOTTO è ancora valido.
Anche quando Task viene letto dal intenti da parte l'attività, ho bisogno di fare qualche calcolo per riempire alcuni altri membri di dati. Quale funzione viene chiamata lì che posso impliment di fare il calcolo? È readFromParcel (...) o il costruttore che prende in un Parcelable come parametro?
Grazie
Soluzione
toArray()
restituisce un tipo di Object[]
, ed è per questo che stai ricevendo:
L'oggetto non è un sostituto valido per il parametro limitato
Oggetto non si estende Parcelable. È necessario eseguire il cast la chiamata toArray()
:
(Resources[])resources.toArray()
Come hai detto, dal momento che le risorse utensileria Parcelable, questo dovrebbe sbarazzarsi del vostro eccezione.