我有一个LinkedHashMap,我想通过Bundle savedInstanceBundle来将它存储在屏幕旋转之间。我该如何安全地做到这一点?在我发布它之前,因为我知道我投入了什么以及我从中得到了什么,但这确实产生了一个警告,它被认为是一个不安全的演员。
我现在在做什么:
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
if(thumbnails != null) {
savedInstanceState.putSerializable("thumbnails", thumbnails);
}
}
并检索它
thumbnails = (LinkedHashMap<Long, Bitmap>)savedInstanceState.getSerializable("thumbnails");
从Bundle反序列化LinkedHashMaps的正确方法是什么?它可以完成吗?如果没有,我如何保留订单而不在其间添加另一个层来跟踪位置,这将涉及更改大量现有代码?
` Caused by: java.lang.ClassCastException: java.util.HashMap cannot be cast to java.util.LinkedHashMap`
答案 0 :(得分:2)
从 MVC (模型 - 视图 - 控制器)的角度来看,Activity
是控制器。 (同样是Fragment
。) View 是由您重用的XML和Android View
子类构成的(人们很少定义自定义View
子类) 。 模型是 - 好吧,你必须自己为 Model 定义一个类!如果您有模型,那么您可以从不同的角度看待它。
但是,如果您仍想将数据从一个Activity化身传递到另一个,那么,为什么不使用JSONObject
/ JSONArray
?这是一种矫枉过正,它会很慢,但至少应该有效。
另一种可能性是将LinkedHashMap
转换为键值对列表,然后从该列表中重构它。