2016-12-24 5 views
0

私はインテントを使用して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); 

    // ... 
} 

私はv1v2v3、およびv4の値をプリントアウトすると、 v1は、nullでない/デフォルト以外の値を持つ唯一のものです(最初に値key1 - 私が最初にインテントに入れたすべての値はデフォルトではありませんでした)。

編集2:

私はそうのようなを使用してみました:

Receiver
intent.putExtra("bundle", bundle); 

そして:

Bundle bundle = intent.getBundleExtra("bundle"); 

しかし、bundleがnullでした。

編集3:

値は何も影響を与えていないように/テントから取得置かれる順序を変更します。また、バンドルの容量を指定することもありません。役立つ場合、このインテントはPendingIntentで使用されます。

+0

「ただし、key1の値はどちらの場合でも保持されているようです」 - これはどうやって決めていますか? – CommonsWare

+0

どのように値を取得していますか? – NehaK

+0

コードで私の質問を編集しました - バンドルには単に 'getExtras()'を使い、バンドルには 'getExtra'を使います。さらに、取得した値をすべて出力し、デフォルト値と比較しました。 – Technicolor

答えて

0

は、私は本当に簡単な何かを見落とし判明 - 私の意図は、受信機を発射してから起動するPendingIntentで使用されましたサービスを提供していましたが、バンドルを元のインテントから、新しいアクティビティ(最終的には、開始されたb yサービス)。問題は修正されました。

0

バンドルを使用せずにインテントエクストラを渡したり受信したりするだけです。

SenderClass.java

Intent intent = new Intent(getApplicationContext(), Receiver.class); 
intent.putExtra("key1", key1); 
intent.putExtra("key2", key2); 
intent.putExtra("key3", key3); 
startActivity(intent) 

Receiver.java

String key1 = getIntent().getStringExtra("key1"); 
String key2 = getIntent().getStringExtra("key"); 
String key3 = getIntent().getStringExtra("key3"); 
+0

私はこれを試しました(コードは私の質問です)。いずれの方法でも働かなかった。 – Technicolor

関連する問題