Я пытаюсь использовать намерение передать несколько значений (разных типов) между двумя действиями. До сих пор я пытался эти два подхода:Android: Невозможно поместить несколько значений в Intent/Bundle
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);
и:
Intent intent = new Intent(context, Receiver.class);
intent.putInt("key1", v1);
intent.putString("key2", v2);
intent.putString("key3", v3);
intent.putInt("key4", v4);
Однако, это только кажется, значение для key1
сохраняется в обоих случаях (при использовании Bundle, он, очевидно, содержит только 1). Что мне не хватает?
Edit: Это, как я получить значения в 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
- это единственное значение с ненулевым значением/значением, отличным от значения по умолчанию (значение, которое я первоначально положил в key1
- на самом деле, все значения, которые я первоначально вложил в Intent, были не по умолчанию).
Edit 2:
Я попытался с помощью так:
intent.putExtra("bundle", bundle);
, а затем в Receiver
:
Bundle bundle = intent.getBundleExtra("bundle");
Однако bundle
был нулевым.
Edit 3:
Изменение порядка, в котором значения ставятся в/извлечена из Intent не кажется влияет ничего. Также не указывается пропускная способность Bundle. Если это помогает, этот Intent используется в PendingIntent.
«Однако в обоих случаях сохраняется только значение key1» - как вы это определяете? – CommonsWare
Как вы извлекаете значения? – NehaK
Отредактировал мой вопрос с помощью кода - я просто использую 'getExtras()' для Bundle и 'getExtra', если нет Bundle.Кроме того, я распечатал все полученные значения и сравнил их с значениями по умолчанию. – Technicolor