私はAndroidアプリケーション開発に不慣れで、バンドルが実際に何をするのか理解できません。
誰かが私のためにそれを説明できますか?
私はAndroidアプリケーション開発に不慣れで、バンドルが実際に何をするのか理解できません。誰かが私のためにそれを説明できますか?
私自身の言葉で言えば、プリミティブ データ型とオブジェクトを対としてMAP
格納する のようにイメージできます。key-value
Bundle
さまざまな を介してデータを渡すために最もよく使用されActivities
ます。そこからデータを格納および取得するための提供putType()
とメソッド。getType()
また、Activity のライフサイクル メソッドのBundle
パラメーターとしてonCreate()
、デバイスの向きが変更されたときにデータを保存する場合に使用できます (この場合、Activity は破棄され、null 以外のパラメーターを Bundle として再作成されます)。
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));
アクティビティを介して Parcelable オブジェクトを渡します。
より多くのコードがあるため、これを行う方法の記事を次に示します。
魔法のメソッドが 1 つありgetIntent()
ます。Intent (拡張データを含むデータもある場合) を返し、そこから 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");
}
メソッドのパラメーターとしての Bundle の使用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() メソッドを介して Bundle に直接データを追加することもできます。Extras はキーと値のペアで、キーは常に String 型です。値として、プリミティブ データ型を使用できます。
受信コンポーネントは、Intent オブジェクトの getAction() および getData() メソッドを介してこの情報にアクセスできます。この Intent オブジェクトは getIntent() メソッドで取得できます。インテントを受け取ったコンポーネントは、getIntent().getExtras() メソッド呼び出しを使用して追加データを取得できます。
主な活動
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
Bundle bundle = new Bundle();
bundle.putString(“Key“, myValue);
intent.putExtras(bundle);
startActivity(intent);
セカンドアクティビティ
Bundle bundle = getIntent().getExtras();
String myValue= bundle.getString(“key“);
まとめられた、またはまとめられた物の集まり、または一定量の素材。それは辞書の意味です...同じバンドルはデータのコレクションです。データは、String、int、float、boolean、およびシリアル化可能なデータなど、任意のタイプにすることができます。バンドルBundleを使用して、あるアクティビティのデータを別のアクティビティに共有および保存できます。
あるアクティビティから別のアクティビティにデータを渡すときに使用される、データのバンドルと考えてください。
ドキュメントでは次のように定義されています
「文字列値からさまざまな Parcelable 型へのマッピング。」
バンドル内にデータを配置し、このバンドルを複数のアクティビティに渡すことができます。個々のデータを渡す必要がないため、これは便利です。データを個別に送信するのではなく、すべてのデータを Bundle に入れ、Bundle を渡すだけです。
それは文字通り物事の束です。情報: そこに何か (文字列、整数など) を入れ、たとえばインテントを使用するときにそれらを単一のパラメーター (バンドル) として渡します。
次に、ターゲット (アクティビティ) がそれらを再び取得し、ID、モード、設定などを読み取ることができます。
String 値からさまざまな Parcelable 型へのマッピング。ここをクリック
例:
Intent mIntent = new Intent(this, Example.class);
Bundle mBundle = new Bundle();
mBundle.extras.putString(key, value);
mIntent.putExtras(mBundle);
あるアクティビティから別のアクティビティに値を送信します。