0

を実装するクラスがありますParcelable。このクラスの3つのフィールドもParcelableオブジェクトです。これらのフィールドをdest.writeParcelable(mParcelableObject、0)を介してパーセルに書き込み、それらを読み戻して、対応するフィールドを設定しようとすると、in.readParcelable(classLoader)が取得されClassCastExceptionます。Parcelablesに複数を書き込むことはできずParcel、システムが、書き込まれたパーセラブルのどれが私のフィールドのどれに対応するかを判断することを期待できないようです。言い換えれば、私がそれらすべてを書き、次にそれらを連続して読む場合:

someFieldOfTypeA = in.readParcelable(classLoader)
someFieldOfTypeB = in.readParcelable(classLoader)
someFieldOfTypeC = in.readParcelable(classLoader)

someFieldOfTypeB..それでは、からの書き込みに成功することはできませんreadParcelable。この読み方は、このタイプreadParcelableがクラスタイプAであると想定しています。これは、私が書いたときに最初に書いたものwriteParcelableです。

これが理にかなっていることを願っています。

では、どうすれば複数の区画を作成し、それらを読み取って、?を取得せずに対応するフィールドに割り当てることができClassCastExceptionますか?

4

1 に答える 1

0

まあ、私にとっては、FieldOfTypeB.CREATOR.writeToParcel(dest) を直接呼び出すほうが運が良かったです (これらのフィールド自体が Parcelable であるため)。

于 2012-12-26T19:53:06.370 に答える