Android HashMap в Bundle?

В android.os.Message используется Bundle для отправки с помощью метода sendMessage. Поэтому можно ли разместить HashMap внутри Bundle ?

Solutions Collecting From Web of "Android HashMap в Bundle?"

Попробуйте:

 Bundle extras = new Bundle(); extras.putSerializable("HashMap",hashMap); intent.putExtras(extras); 

И во второй деятельности

 Bundle bundle = this.getIntent().getExtras(); if(bundle != null) { hashMap = bundle.getSerializable("HashMap"); } 

Потому что Hashmap по умолчанию реализует Serializable поэтому вы можете передать его с помощью putSerializable в Bundle и получить другую активность, используя getSerializable

Согласно документу , Hashmap реализует Serializable , поэтому вы можете putSerializable я думаю. Вы попробовали?

Если вы хотите отправить все ключи в комплекте, вы можете попробовать

 for(String key: map.keySet()){ bundle.putStringExtra(key, map.get(key)); } 

Обратите внимание: если вы используете AppCompatActivity, вам нужно будет вызвать protected void onSaveInstanceState(Bundle outState) {} ( НЕ public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {} ).

Пример кода …

Сохраните карту:

 @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putSerializable("leftMaxima", leftMaxima); outState.putSerializable("rightMaxima", rightMaxima); } 

И получить его в onCreate:

 if (savedInstanceState != null) { leftMaxima = (HashMap<Long, Float>) savedInstanceState.getSerializable("leftMaxima"); rightMaxima = (HashMap<Long, Float>) savedInstanceState.getSerializable("rightMaxima"); } 

Извините, если это какой-то дубликат ответа – может быть, кто-то найдет это полезным. 🙂