Android的HashMap在捆绑?

android.os.Message使用一个Bundle来发送它的sendMessage方法。 因此,是否有可能把一个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所以你可以在Bundle中使用putSerializable来传递它,并使用putSerializable获取其他活动

根据文档 , Hashmap实现了Serializable ,所以你可以把putSerializable我猜。 你试过了吗?

请注意:如果您使用的是AppCompatActivity,则必须调用protected void onSaveInstanceState(Bundle outState) {}NOT 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"); } 

对不起,如果这是某种重复的答案 – 也许有人会觉得它有用。 🙂

如果你想发送捆绑中的所有密钥,你可以尝试

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