2011-06-22 7 views
2

arraylistのオブジェクトは外部ライブラリで定義されています。オブジェクトにはいくつかのint値とfloat []が含まれています。Android:ArrayList <object>をアクティビティから別のものに渡す方法

すべてのArrayListをアクティビティから別のアクティビティに渡すにはどうすればよいですか? ありがとう!

ところで、私はオブジェクトクラスのコントロールを持っていません。

答えて

1

これは、アレイリストに含まれるオブジェクトのタイプによって異なります。それを制御でき、Parcelableを実装できる場合は、Intent.putParcelableArrayListExtraを使用できます。

もう1つの方法は、アプリケーションを拡張してそこにArrayListを格納することです。インテントで渡す必要はなく、アプリケーション内のすべてのアクティビティはgetApplication()を呼び出すことでアクセスできます。 Applicationオブジェクトは、アプリケーションの存続期間中存続し、その中に格納されているデータも存続します。

EDIT:

このため、Applicationオブジェクトを使用するには:

  1. android.app.Applicationを拡張するクラスを(のはMyApplicationそれを呼びましょう)書きます。配列リストを保持するフィールドを宣言します(arrayとしましょう)。
  2. マニフェストの<application>タグにMyApplicationという名前を指定します。 MyApplicationのインスタンスは、アプリケーションのプロセスを作成するときにシステムによって作成されます。
  3. フィールドへのアクセスを希望するアクティビティは、((MyApplication) getApplication()).arrayを使用できます。最初のアクティビティで初期化し、2番目のアクティビティで取得します。

全く別のアプローチは、あるクラスで静的なシングルトンを宣言することです。ドキュメントは実際にはアプリケーションをサブクラス化することよりもモジュラー化することを推奨しています。それは基本的にグローバル変数を宣言しているので、ハックのようなものです。しかし、アプリケーションオブジェクトにランダムなデータを置くことよりも、ハッキングの問題はないと思います。

+0

私はそれを制御できませんので、私は最初のアプローチをあきらめる必要があります。 2番目の方法はありませんでした。アプリケーションを拡張してArrayListを格納する方法getApplication()の使い方あなたは例を挙げていただけますか? – wzb5210

+0

@ wzb5210 - 私はいくつかの詳細で私の答えを更新しました。 –

+0

ありがとう!私はそれが動作するかどうかを彼らに試してみます。 – wzb5210

0
Intent intent = new Intent(this, TargetActivity.class); 
intent.putExtra("nameOfArray",YOUR_ARRAY_LIST); 
startActivity(intent); 
+0

putExtraは小数点以下の値しか動作しないようです。あなたはArrayListのためにもうまくいきますか? – wzb5210

+0

public putExtra(String name、Serializable value)それはSerializableをとり、ArrayListは直列化可能であると言います... –

関連する問題