2

サービスからアクティビティに渡すためにタスクを分割可能にしてバンドルに入れようとしていますが、カスタム タイプの ArrayList を操作するのに少し問題があります。

仕事:

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

リソース:

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

タスク内の 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>

Resources が Parcelable を実装している場合、どこに問題があるのか​​わかりません。

編集:この部分を修正したと思います。代わりに .writeParcelableList() を使用しました。誰かがこれが機能することを確認できますか? 以下の質問はまだ有効です。

また、タスクがアクティビティによってインテントから読み取られる場合、他のデータ メンバーを埋めるために何らかの計算を行う必要があります。計算を行うために実装できる関数は何ですか? readFromParcel(...) または Parcelable をパラメーターとして受け取るコンストラクターですか?

ありがとう

4

1 に答える 1

3

toArray()のタイプを返すため、次のObject[]ようになります。

オブジェクトは境界付きパラメーターの有効な代替ではありません

オブジェクトは Parcelable を拡張しません。toArray()呼び出しをキャストする必要があります。

(Resources[])resources.toArray()

あなたが言ったように、 Resources は Parcelable を実装しているので、これで例外が取り除かれます。

于 2010-09-21T16:57:34.327 に答える