Android HashMap in Bundle?
try as:
Bundle extras = new Bundle();
extras.putSerializable("HashMap",hashMap);
intent.putExtras(extras);
and in second Activity
Bundle bundle = this.getIntent().getExtras();
if(bundle != null) {
hashMap = bundle.getSerializable("HashMap");
}
because Hashmap by default implements Serializable
so you can pass it using putSerializable
in Bundle and get in other activity using getSerializable
Please note: If you are using a AppCompatActivity, you will have to call the
protected void onSaveInstanceState(Bundle outState) {}
(NOT public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {}
) method.
Example code...
Store the map:
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putSerializable("leftMaxima", leftMaxima);
outState.putSerializable("rightMaxima", rightMaxima);
}
And receive it in onCreate:
if (savedInstanceState != null) {
leftMaxima = (HashMap<Long, Float>) savedInstanceState.getSerializable("leftMaxima");
rightMaxima = (HashMap<Long, Float>) savedInstanceState.getSerializable("rightMaxima");
}
Sorry if it's some kind of a duplicate answer - maybe someone will find it useful. :)
According to the doc, Hashmap
implements Serializable
, so you can putSerializable
I guess. Did you try it ?
If you want to send all the keys in the bundle, you can try
for(String key: map.keySet()){
bundle.putStringExtra(key, map.get(key));
}