【发布时间】:2014-12-11 13:43:02
【问题描述】:
我有一个 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 中反序列化 LinkedHashMap 的正确方法是什么?可以做到吗?如果没有,我如何保持顺序而不在其间添加另一个层来跟踪涉及更改大量现有代码的位置?
` Caused by: java.lang.ClassCastException: java.util.HashMap cannot be cast to java.util.LinkedHashMap`
【问题讨论】:
-
缩略图是 HashMap 还是 LinkedHashMap?
-
这是一个LinkedHashMap
-
您无法在 Android 中可靠地将
LinkedHashMap插入/检索到Bundle。你得到的是HashMap,而不是LinkedHashMap。更多详情请见my answer to this question
标签: android casting classcastexception type-safety linkedhashmap