第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在 Activity 之間如何傳遞 LinkedHashMap?

在 Activity 之間如何傳遞 LinkedHashMap?

不負(fù)相思意 2019-03-13 14:15:36
我想在activities 之間傳遞 LinkedHashMap,代碼如下:Activity ALinkedHashMap 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 中當(dāng)接受包對(duì)象時(shí),卻獲取"Class cast exception" 錯(cuò)誤信息Activity BBundle 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我查相關(guān)資料得知 LinkedHashMap 也實(shí)現(xiàn) Serializable 接口。我使用 LinkedHashMap 保持對(duì)象的順序。在 Activity 之間如何傳遞 LinkedHashMap?
查看完整描述

4 回答

?
慕斯709654

TA貢獻(xiàn)1840條經(jīng)驗(yàn) 獲得超5個(gè)贊

關(guān)于在Activity之間傳對(duì)像,最好的方法就是共享內(nèi)存。

設(shè)計(jì)一個(gè)類(lèi)作為單例模式,如下

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里傳一個(gè)key字符串值到Activity2里,再在Activity2里去獲取Share里的對(duì)象,這樣子既不用序列化也減少序列化所使用時(shí)間
,總之,方便,快捷


查看完整回答
反對(duì) 回復(fù) 2019-04-28
?
慕桂英546537

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊

如果是同一個(gè)進(jìn)程中且即傳即用,可考慮直接用全局變量靜態(tài)變量,即直接在ActivityB定義public static LinkedHashMap mLinkedHashMap,然后在ActivityA中直接寫(xiě)ActivityB. mLinkedHashMap= xxx賦值,在ActivityB啟動(dòng)時(shí)直接讀取mLinkedHashMap。由于傳過(guò)去之后馬上就使用,因此不用擔(dān)心內(nèi)存不足被釋放之類(lèi)的問(wèn)題。
如果是不同進(jìn)程,就只能做系列化反系列化了。

查看完整回答
反對(duì) 回復(fù) 2019-04-28
?
Helenr

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個(gè)贊

只能轉(zhuǎn)化到HashMap,轉(zhuǎn)化會(huì)失敗
我傳個(gè)字符串轉(zhuǎn)為HashMap成功了,一步到位好像有難度,你再加油摸索一下
(你若傳對(duì)象,那個(gè)class像似要繼承Serializable接口)
//mainActivity2

if (getIntent().getSerializableExtra("OBJECTS_LINKED_HASHMAP") != null){        
            Bundle bundle2 = this.getIntent().getExtras();
            HashMap<String, Object>   user_info = (HashMap<String, Object>) bundle2.getSerializable("OBJECTS_LINKED_HASHMAP");
            String str = user_info.toString();
            System.out.println("Got str:"+str); // Got str:{TEST=this is a test}
        }

//mainActivity1

LinkedHashMap mLinkedHashMap = new LinkedHashMap<String, Object>();
            mLinkedHashMap.put("TEST", "this is a test");
            Bundle bundle = new Bundle();
            bundle.putSerializable("OBJECTS_LINKED_HASHMAP", mLinkedHashMap); 
            Intent intent = new Intent(this, UserActivity.class); 
            intent.putExtras(bundle);
            startActivity(intent);


查看完整回答
反對(duì) 回復(fù) 2019-04-28
  • 4 回答
  • 0 關(guān)注
  • 717 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)