私はインテントを使用して2つのアクティビティ間で(異なるタイプの)複数の値を渡そうとしています。しかし、それはバンドルを使用している場合key1
のための唯一の値は(両方のケースに保持されているようで、それは明らかにのみ含まれていAndroid:複数の値をインテント/バンドルに入れることができません
Intent intent = new Intent(context, Receiver.class);
intent.putInt("key1", v1);
intent.putString("key2", v2);
intent.putString("key3", v3);
intent.putInt("key4", v4);
:
Intent intent = new Intent(context, Receiver.class);
Bundle bundle = new Bundle();
bundle.putInt("key1", v1);
bundle.putString("key2", v2);
bundle.putString("key3", v3);
bundle.putInt("key4", v4);
intent.putExtras(bundle);
と:これまでのところ私はこの2つの方法を試してみました1キー)。私は何が欠けていますか?
編集:これは私がReceiver
で値を取得する方法である。また
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video);
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
v1 = bundle.getInt("key1", DEFAULT1);
v2 = bundle.getString("key2", "DEFAULT2");
v3 = bundle.getString("key3", "DEFAULT3");
v4 = bundle.getInt("key4", DEFAULT4);
// ...
}
:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video);
Intent intent = getIntent();
v1 = intent.getIntExtra("key1", DEFAULT1);
v2 = intent.getStringExtra("key2");
v3 = intent.getStringExtra("key3");
v4 = intent.getIntExtra("key4", DEFAULT2);
// ...
}
私はv1
、v2
、v3
、およびv4
の値をプリントアウトすると、 v1
は、nullでない/デフォルト以外の値を持つ唯一のものです(最初に値key1
- 私が最初にインテントに入れたすべての値はデフォルトではありませんでした)。
編集2:
私はそうのようなを使用してみました:
Receiver
で
intent.putExtra("bundle", bundle);
そして:
Bundle bundle = intent.getBundleExtra("bundle");
しかし、bundle
がnullでした。
編集3:
値は何も影響を与えていないように/テントから取得置かれる順序を変更します。また、バンドルの容量を指定することもありません。役立つ場合、このインテントはPendingIntentで使用されます。
「ただし、key1の値はどちらの場合でも保持されているようです」 - これはどうやって決めていますか? – CommonsWare
どのように値を取得していますか? – NehaK
コードで私の質問を編集しました - バンドルには単に 'getExtras()'を使い、バンドルには 'getExtra'を使います。さらに、取得した値をすべて出力し、デフォルト値と比較しました。 – Technicolor