アレイリストの束
答えて
YourObject
にParcelable
インターフェイスを実装してから、bundle.putParcelableArraylist(theParcelableArraylist)
を使用してください。
編集:whoopsが質問を誤読しました。なぜあなたはarraylistの配列を保存したいですか?オリエンテーションの変更を維持するために、代わりにonRetainNonConfigurationInstance
を使用したいと思うかもしれませんか?
編集2:[OK]をクリックします。新しいWrapper
クラスを作成し、Parcelable
を実装します(myObjects
も分解可能でなければならないことに注意してください)。
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(mElements.length);
for(ArrayList<MyObject> element : mElements) {
dest.writeParcelableArray(element.toArray(new MyObject[0]), flags);
}
}
そしてコンストラクタ:writeToParcel
方法は次のようなものになります、私はちょうどputSerializable(myarraylistofstuff)
を使用して、私はget()
を使用してキャストで取り戻す
private Wrapper(Parcel in) {
int length = in.readInt();
//Declare list
for (int i = 0; i < length; i++) {
MyObject[] read = in.readParcelableArray(Wrapper.class.getClassLoader());
//add to list
}
}
あなたのオブジェクトがSerializable
インタフェースでマークされたシリアル化をサポートしている場合、あなたはbundle.putSerializable
を使用することができるはずです。
ArrayList
Serializable
をサポートしていますが、平野についてはわかりません。array
バンドルを使用して
ない可能バンドルは唯一のプリミティブの配列リストを可能にするよう、...
はparcleableまたはアプリケーションレベルのデータまたは静的変数(悪い習慣)を使用してみてください。
を、あなただけの未チェックの警告を沈黙させる必要があります。私は間違っている場合は私に正しいと思うあなたはSerializable
としてそれを偽造するオブジェクトを渡すことができます、あなたはオブジェクト参照を渡す同じプロセスにとどまる限り。このアプローチは、明らかに、別のアプリケーションにデータを渡すときには機能しません。
EDIT:現在アンドロイドのみ断片間の参照を渡し、IはActivity
に任意のオブジェクトを渡すことを試みてきた、それが働いたが、オブジェクトが異なっていた、Fragment
の引数を使用して、同じ試験ではなく、同じObject
を示しました。あなたはそれが代わりにParcel
を使用することをお勧めしますオブジェクトの多くを持っている場合
とにかくそれをデシリアライズし、私の
Object
細かいシリアライズし、それは向きの変更のため、ほとんどですが、私は活動のライフサイクルに対応するために、同様にそれを必要とします。 – Greg私は、パーセルブルを実装し、それほどエレガントではない方法でラッパークラスを作成することができると思います。私は私の答えを編集します。 – dmon
これはうまくいきましたか? –