程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> activity-在 Activity 之間如何傳遞 LinkedHashMap?

activity-在 Activity 之間如何傳遞 LinkedHashMap?

編輯:編程綜合問答
在 Activity 之間如何傳遞 LinkedHashMap?

我想在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裡的對象,這樣子既不用序列化也減少序列化所使用時間,總之,方便,快捷
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved