arraylistのオブジェクトは外部ライブラリで定義されています。オブジェクトにはいくつかのint値とfloat []が含まれています。Android:ArrayList <object>をアクティビティから別のものに渡す方法
すべてのArrayListをアクティビティから別のアクティビティに渡すにはどうすればよいですか? ありがとう!
ところで、私はオブジェクトクラスのコントロールを持っていません。
arraylistのオブジェクトは外部ライブラリで定義されています。オブジェクトにはいくつかのint値とfloat []が含まれています。Android:ArrayList <object>をアクティビティから別のものに渡す方法
すべてのArrayListをアクティビティから別のアクティビティに渡すにはどうすればよいですか? ありがとう!
ところで、私はオブジェクトクラスのコントロールを持っていません。
これは、アレイリストに含まれるオブジェクトのタイプによって異なります。それを制御でき、Parcelableを実装できる場合は、Intent.putParcelableArrayListExtra
を使用できます。
もう1つの方法は、アプリケーションを拡張してそこにArrayListを格納することです。インテントで渡す必要はなく、アプリケーション内のすべてのアクティビティはgetApplication()
を呼び出すことでアクセスできます。 Applicationオブジェクトは、アプリケーションの存続期間中存続し、その中に格納されているデータも存続します。
EDIT:
このため、Applicationオブジェクトを使用するには:
android.app.Application
を拡張するクラスを(のはMyApplication
それを呼びましょう)書きます。配列リストを保持するフィールドを宣言します(array
としましょう)。<application>
タグにMyApplication
という名前を指定します。 MyApplication
のインスタンスは、アプリケーションのプロセスを作成するときにシステムによって作成されます。((MyApplication) getApplication()).array
を使用できます。最初のアクティビティで初期化し、2番目のアクティビティで取得します。全く別のアプローチは、あるクラスで静的なシングルトンを宣言することです。ドキュメントは実際にはアプリケーションをサブクラス化することよりもモジュラー化することを推奨しています。それは基本的にグローバル変数を宣言しているので、ハックのようなものです。しかし、アプリケーションオブジェクトにランダムなデータを置くことよりも、ハッキングの問題はないと思います。
Intent intent = new Intent(this, TargetActivity.class);
intent.putExtra("nameOfArray",YOUR_ARRAY_LIST);
startActivity(intent);
putExtraは小数点以下の値しか動作しないようです。あなたはArrayListのためにもうまくいきますか? – wzb5210
public putExtra(String name、Serializable value)それはSerializableをとり、ArrayListは直列化可能であると言います... –
私はそれを制御できませんので、私は最初のアプローチをあきらめる必要があります。 2番目の方法はありませんでした。アプリケーションを拡張してArrayListを格納する方法getApplication()の使い方あなたは例を挙げていただけますか? – wzb5210
@ wzb5210 - 私はいくつかの詳細で私の答えを更新しました。 –
ありがとう!私はそれが動作するかどうかを彼らに試してみます。 – wzb5210