私はAndroidアプリケーション開発に不慣れで、バンドルが実際に何をするのか理解できません。
誰かが私のためにそれを説明できますか?
私はAndroidアプリケーション開発に不慣れで、バンドルが実際に私たちに何をするのか理解できません。誰かが私にそれを説明できますか?
私自身の言葉では、MAP
のようにイメージできます。プリミティブデータ型およびobjectsカップルとしてkey-value
Bundle
は、さまざまなActivities
を介してデータを渡すために最もよく使用されます。putType()
およびgetType()
データを保存および取得するためのメソッドを提供しますそれから。
また、Bundle
onCreate()
アクティビティのライフサイクルメソッドのパラメータとしてデバイスの向きが変更されたときにデータを保存する場合に使用できます(この場合、アクティビティは破棄され、バンドルとしてnull以外のパラメーターを使用して再作成されます)。
Bundle
の詳細については、次のように読むことができます reference at developer.Android.com
ここから始めて、いくつかのデモアプリケーションを作成して経験を積んでください。
アクティビティを介したプリミティブデータ型の受け渡し:
Intent i = new Intent(ActivityContext, TargetActivity.class);
Bundle dataMap = new Bundle();
dataMap.putString("key", "value");
dataMap.putInt("key", 1);
i.putExtras(dataMap);
startActivity(i);
アクティビティを介して値のリストを渡す:
Bundle dataMap = new Bundle();
ArrayList<String> s = new ArrayList<String>();
s.add("Hello");
dataMap.putStringArrayList("key", s); // also Integer and CharSequence
i.putExtras(dataMap);
startActivity(i);
シリアル化されたオブジェクトをアクティビティに渡す:
public class Foo implements Serializable {
private static final long serialVersionUID = 1L;
private ArrayList<FooObject> foos;
public Foo(ArrayList<FooObject> foos) {
this.foos = foos;
}
public ArrayList<FooObject> getFoos() {
return this.foos;
}
}
public class FooObject implements Serializable {
private static final long serialVersionUID = 1L;
private int id;
public FooObject(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
次に:
Bundle dataMap = new Bundle();
ArrayList<FooObject> foos = new ArrayList<FooObject>();
foos.add(new FooObject(1));
dataMap.putSerializable("key", new Foo(foos));
パーセル可能なオブジェクトをアクティビティに渡す:
はるかに多くのコードがあるので、ここにそれを行う方法の記事があります:
1つの魔法のメソッドがあります:getIntent()
そこからActivityを開始したインテント(拡張データも含むデータがある場合)を返すメソッドが呼び出されます。
そう:
Bundle dataFromIntent = getIntent().getExtras();
if (dataFromIntent != null) {
String stringValue = dataFromIntent.getString("key");
int intValue = dataFromIntent.getInt("key");
Foo fooObject = (Foo) dataFromIntent.getSerializable("key");
// getSerializble returns Serializable so we need to cast to appropriate object.
ArrayList<String> stringArray = dataFromIntent.getStringArrayList("key");
}
onCreate()
メソッドのパラメーターとしてのバンドルの使用:
以下のように、onSaveInstanceState()
メソッドにデータを格納しています。
@Override
public void onSaveInstanceState(Bundle map) {
map.putString("key", "value");
map.putInt("key", 1);
}
そして、それらをonCreate()
メソッド(この場合はBundle
nullではないパラメータとして)以下のように:
@Override
public void onCreate(Bundle savedInstanceState) {
if (savedInstanceState != null) {
String stringValue = savedInstanceState.getString("key");
int intValue = savedInstanceState.getString("key");
}
...
}
注:onRestoreInstanceState()
メソッドでもデータを復元できますが、一般的ではありません(onStart()
メソッドの後に呼び出されます。onCreate()
は前に呼び出されます) 。
一般的な英語:"これは、物の集まり、または大量の資料であり、結び付けられているか、まとめられています。"
Android "これは、ある種のデータを格納するために使用されるキーとその値のコレクションです。"
バンドルは通常、さまざまなコンポーネント間でデータを渡すために使用されます。 getExtras()メソッドを介してインテントから取得できるバンドルクラス。
IntentオブジェクトのオーバーロードされたputExtra()メソッドを介して、データをバンドルに直接追加することもできます。エクストラはキーと値のペアであり、キーは常に文字列型です。値として、プリミティブデータ型を使用できます。
受信コンポーネントは、IntentオブジェクトのgetAction()メソッドとgetData()メソッドを介してこの情報にアクセスできます。このインテントオブジェクトは、getIntent()メソッドを介して取得できます。また、インテントを受け取るコンポーネントは、getIntent()。getExtras()メソッド呼び出しを使用して追加のデータを取得できます。
MainActivity
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
Bundle bundle = new Bundle();
bundle.putString(“Key“, myValue);
intent.putExtras(bundle);
startActivity(intent);
SecondActivity
Bundle bundle = getIntent().getExtras();
String myValue= bundle.getString(“key“);
一緒に結ばれた、または包まれたもののコレクション、または大量の資料。それは辞書の意味です...同じバンドルによってデータのコレクションです。データは、String、int、float、boolean、および任意のシリアル化可能なデータなど、任意のタイプにすることができます。バンドル Bundle を使用して、あるアクティビティのデータを別のアクティビティに共有および保存できます。
あるアクティビティから別のアクティビティにデータを渡すときに使用されるデータのバンドルと見なしてください。
ドキュメント はそれを次のように定義します
「文字列値からさまざまなParcelableタイプへのマッピング。」
バンドル内にデータを配置してから、このバンドルを複数のアクティビティに渡すことができます。個々のデータを渡す必要がないため、これは便利です。データを個別に送信するのではなく、すべてのデータをバンドルに入れてから、バンドルを渡すだけです。
それは文字通り物事の束です。情報:そこに何か(文字列、整数など)を入れ、たとえばインテントを使用する場合は、それらを単一のパラメーター(バンドル)として渡します。
次に、ターゲット(アクティビティ)がそれらを再度取得して、ID、モード、設定などを読み取ることができます。
文字列値からさまざまなParcelableタイプへのマッピング。 ここをクリック
例:
Intent mIntent = new Intent(this, Example.class);
Bundle mBundle = new Bundle();
mBundle.extras.putString(key, value);
mIntent.putExtras(mBundle);
あるアクティビティから別のアクティビティに値を送信します。