Вы можете попробовать это для заполнения намерения:
val map = HashMap<String,YourObject>()
val intent = Intent()
intent.putExtra("SIZE", map.size)
for (k in 0..map.size) {
intent.putExtra("KEY"+k, map.keys.toList()[k])
intent.putExtra("VALUE"+k, map[map.keys.toList()[k]])
}
И это для чтения назад:
val mapReceived = hashMapOf<String,YourObject>()
val intReceived = getIntent()
if (intReceived.hasExtra("SIZE")) {
val size = intReceived.getIntExtra("SIZE", 0)
for (k in 0..size) {
mapReceived[intReceived.getStringExtra("KEY"+k)] = intReceived.getParcelableExtra("VALUE"+k)
}
}
Может быть не самый умный, но, вероятно, должно работать
На Java:
Запись:
HashMap<String, ActivityBase> map = new HashMap<String,ActivityBase>();
Intent intent = new Intent();
intent.putExtra("SIZE", map.size());
for (int k=0; k<=map.size(); k++){
intent.putExtra("KEY"+k, (String)map.keySet().toArray()[k]);
intent.putExtra("VALUE"+k, (ActivityBase) map.get(map.values().toArray()[k]));
}
Чтение:
HashMap<String, ActivityBase> mapReceived = new HashMap<String,ActivityBase>();
Intent intReceived = getIntent();
if (intReceived.hasExtra("SIZE")) {
int size = intReceived.getIntExtra("SIZE", 0);
for (int k=0; k<=map.size(); k++){
mapReceived.put(intReceived.getStringExtra("KEY"+k), intReceived.getParcelableExtra("VALUE"+k));
}
}