Mar*_*per 81 android dictionary bundle
在android.os.Message
使用Bundle
发送与它的sendMessage法.因此,有可能把HashMap
一个Bundle
?
ρяσ*_*я K 153
试着:
Bundle extras = new Bundle();
extras.putSerializable("HashMap",hashMap);
intent.putExtras(extras);
Run Code Online (Sandbox Code Playgroud)
并在第二个活动中
Bundle bundle = this.getIntent().getExtras();
if(bundle != null) {
hashMap = bundle.getSerializable("HashMap");
}
Run Code Online (Sandbox Code Playgroud)
因为Hashmap 默认实现,Serializable
所以你可以使用putSerializable
Bundle 传递它并使用其他活动getSerializable
请注意:如果使用的是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);
}
Run Code Online (Sandbox Code Playgroud)
并在onCreate中接收它:
if (savedInstanceState != null) {
leftMaxima = (HashMap<Long, Float>) savedInstanceState.getSerializable("leftMaxima");
rightMaxima = (HashMap<Long, Float>) savedInstanceState.getSerializable("rightMaxima");
}
Run Code Online (Sandbox Code Playgroud)
抱歉,如果答案重复,也许有人会觉得有用。:)
如果您想发送捆绑包中的所有密钥,您可以尝试
for(String key: map.keySet()){
bundle.putStringExtra(key, map.get(key));
}
Run Code Online (Sandbox Code Playgroud)