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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top