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)); }