回答:
バンドルは通常、さまざまなAndroidアクティビティ間でデータを受け渡すために使用されます。渡す値のタイプはユーザーによって異なりますが、バンドルはすべてのタイプの値を保持して新しいアクティビティに渡すことができます。
次のように使用できます。
Intent intent = new...
Intent(getApplicationContext(), SecondActivity.class);
intent.putExtra("myKey", AnyValue);
startActivity(intent);
次のようにして、渡された値を取得できます。
Bundle extras = intent.getExtras();
String tmp = extras.getString("myKey");
あなたはより多くの情報を見つけることができます:
Bundle
およびIntent
オブジェクトを使用して、アクティビティ間でデータを受け渡します。
最初にBundle
オブジェクトを作成する
Bundle b = new Bundle();
次に、に格納されanystring
ている文字列データをバンドルキーに関連付けます"myname"
b.putString("myname", anystring);
次に、Intent
オブジェクトを作成します
Intent in = new Intent(getApplicationContext(), secondActivity.class);
バンドルオブジェクトb
をインテントに渡す
in.putExtras(b);
2番目のアクティビティを開始します
startActivity(in);
2番目のアクティビティでは、最初のアクティビティから渡されたデータにアクセスする必要があります
Intent in = getIntent();
次に、バンドルからデータを取得する必要があります
Bundle b = in.getExtras();
最後に、名前付きキーに関連付けられた文字列データの値を取得します "myname"
String s = b.getString("myname");
バンドルはアクティビティによって使用され、将来自分自身にデータを渡すことを追加する必要があります。
画面が回転するか、別のアクティビティが開始されると、メソッドprotected void onSaveInstanceState(Bundle outState)
が呼び出され、アクティビティが破棄されます。その後、アクティビティの別のインスタンスが作成され、public void onCreate(Bundle savedInstanceState)
呼び出されます。アクティビティの最初のインスタンスが作成されたとき、バンドルはnullです。バンドルがnullでない場合、前任者によって開始された一部のビジネスはアクティビティーを続行します。
Androidはテキストをテキストフィールドに自動的に保存しますが、すべてを保存するわけではなく、微妙なバグが表示されることがあります。
ただし、最も一般的なアンチパターンは、それonCreate()
が初期化だけを行うことを前提としています。また、状態を復元する必要があるため、誤りです。
この「ローテーション時にアクティビティを再作成する」動作を無効にするオプションがありますが、再起動に関連するバグを防ぐことはできず、言及するのがより難しくなるだけです。
また、アクティビティが破棄されるときに呼び出しが保証される唯一のメソッドはonPause()
です。(ドキュメントのアクティビティライフサイクルグラフを参照してください。)
A Bundle
はMap
、マップするJava オブジェクトによく似ています。String
キーを値にています。アクティビティと他のアプリケーションコンポーネント間で情報を受け渡すために使用されます。フレームワークは、状態情報をキャプチャして復元するためにも使用されます。
Androidがこのためにプレーンな古いMap
オブジェクトを使用しない理由は、Map
柔軟性が高すぎるためです。シリアル化できないオブジェクト(I / Oストリームなど)を含めることができます。Bundle
APIは、バンドルの内容は、シリアライズであることが保証されるようにバンドルに追加できるオブジェクトの種類を制限します。Androidフレームワークはこのプロパティに依存しています。
Application Fundamentalsのドキュメントを読むことをお勧めします。これにより、とりわけ、バンドルとインテントが何であり、それらが何に使用されるかが説明されます。
バンドルを使用すると、インテントを介して1つのアクティビティから別のアクティビティに任意のデータを送信できます。インテントをブロードキャストすると、興味のあるアクティビティ(および他のBroadcastRecievers)に通知されます。インテントにはバンドルを含めることができるため、インテントとともに追加のデータを送信できます。
バンドルはキーと値のマッピングであるため、ハッシュのように見えますが、厳密には単一のString / Fooオブジェクトマッピングに限定されません。特定のデータタイプのみが「Parcelable」と見なされ、Bundle APIで明示的に記述されていることに注意してください。
バンドルを作成するだけで、
Bundle simple_bundle=new Bundle();
simple_bundle.putString("item1","value1");
Intent i=new Intent(getApplicationContext(),this_is_the_next_class.class);
i.putExtras(simple_bundle);
startActivity(i);
「this_is_the_next_class.class」
このようなアイテムを取得できます。
Intent receive_i=getIntent();
Bundle my_bundle_received=receive_i.getExtras();
my_bundle_received.get("item1");
Log.d("Value","--"+my_bundle_received.get("item1").toString);
バンドル:-文字列値からさまざまなParcelableタイプへのマッピング。
バンドルは通常、Androidのさまざまなアクティビティ間でデータを渡すために使用されます。
onPause()を呼び出してから、onStop()を呼び出してから、onStop()をonPause()に逆順に呼び出します。
システムが以前の状態を復元するために使用する保存されたデータは「インスタンスの状態」と呼ばれ、Bundleオブジェクトに格納されたキーと値のペアのコレクションです。
bundleは、アクティビティ間でデータを共有し、oncreate()メソッドでアプリの状態を保存して、アプリがどこで停止したかがわかるようにするために使用されます...
バンドルを使用すると、インテントオブジェクトを利用して、あるアクティビティから別のアクティビティにデータが送信されます。バンドルは、任意のタイプのデータを保持します。
次に、2つのアクティビティ間でデータを渡すバンドルを作成する方法を説明します。
ステップ1:最初のアクティビティ
Bundle b=new Bundle();
b.putString("mkv",anystring);
Intent in=new Intent(getApplicationContext(),secondActivity.class);
in.putExtras(b);
startActivity(in);
ステップ2:2番目のアクティビティ
Intent in=getIntent();
Bundle b=in.getExtras();
String s=b.getString("mkv");
これはあなたに役立つと思います...........
最初のアクティビティ:
String food = (String)((Spinner)findViewById(R.id.food)).getSelectedItem();
RadioButton rb = (RadioButton) findViewById(R.id.rb);
Intent i = new Intent(this,secondActivity.class);
i.putExtra("food",food);
i.putExtra("rb",rb.isChecked());
2番目のアクティビティ:
String food = getIntent().getExtras().getString("food");
Boolean rb = getIntent().getExtras().getBoolean("rb");