我想在activities 之間傳遞 LinkedHashMap,代碼如下:
Activity A
LinkedHashMap mLinkedHashMap = new LinkedHashMap<String, Object>();
// setting data in map
Bundle bundle = new Bundle();
bundle.putSerializable("OBJECTS_LINKED_HASHMAP", mLinkedHashMap);
Intent intent = new Intent(this, ActivityB.class);
intent.putExtras(bundle);
startActivity(intent);
在 Activity 中當接受包對象時,卻獲取"Class cast exception" 錯誤信息
Activity B
Bundle bundle = this.getIntent().getExtras();
LinkedHashMap mLinkedHashMap = new LinkedHashMap<String, Object>();
mLinkedHashMap = (LinkedHashMap<String, Object>) bundle.getSerializable("OBJECTS_LINKED_HASHMAP");
獲得異常:
ClassCastException: java.util.HashMap cannot be cast to LinkedHashMap
我查相關資料得知 LinkedHashMap 也實現 Serializable 接口。
我使用 LinkedHashMap 保持對象的順序。
在 Activity 之間如何傳遞 LinkedHashMap?
關於在Activity之間傳對像,最好的方法就是共享內存。
設計一個類作為單例模式,如下
public class Share {
private static Share current;
public static Share getInstance() {
synchronized (Share.class) {
if(current == null) {
current = new Share();
}
return current;
}
}
final HashMap<String, Object> memoryMap;
public Share() {
memoryMap = new HashMap<String, Object>();
}
public void put(String key, Object value) {
memoryMap.put(key, value);
}
public Object get(String key) {
return memoryMap.get(key);
}
}
然後在Activity1裡傳一個key字符串值到Activity2裡,再在Activity2裡去獲取Share裡的對象,這樣子既不用序列化也減少序列化所使用時間,總之,方便,快捷