成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

android - Activity之間傳遞Map<String,Object>

瀏覽:155日期:2024-09-07 15:53:16

問題描述

listview.setOnItemClickListener(new OnItemClickListener() {

@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) { Intent it = new Intent(getActivity(), ReleaseDetail.class); final SerializableMap myMap = new SerializableMap(); myMap.setMap(tempList);// 將map數據添加到封裝的myMap中 Bundle bundle = new Bundle(); bundle.putSerializable('map1', myMap); it.putExtras(bundle); startActivity(it); getActivity().finish();} });

public class SerializableMap implements Serializable {

private static final long serialVersionUID = 3958588986554810147L;private Map<String, ReleaseContents> map;public Map<String, ReleaseContents> getMap() { return map;}public void setMap(Map<String, ReleaseContents> tempMap) { this.map = tempMap;}

}

ReleaseContents是一個實體類也實現了Serializable 接口還是報以下錯誤呢!!!

07-12 12:51:58.093: E/AndroidRuntime(12270): java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = XXX.SerializableMap)XXX查資料說是對象也是要先序列化接口,我ReleaseContents都實現了的呀!請問是哪里錯了哦!

android - Activity之間傳遞Map<String,Object>

android - Activity之間傳遞Map<String,Object>

問題解答

回答1:

ReleaseContents類下使用到的類也需要實現Serializable接口,例如你的ReleaseContents類里面有個屬性是Version類,那么這個Version類也許實現Serializable接口。

回到你的例子,很明顯,在ReleaseContents類有個屬性是Bitmap類,Bitmap并沒有實現Serializable接口,而是實現了Parcelable接口。

回答2:

使用Android的序列化類,而非是傳統的java序列化類Parcelable 這個。或者利用Gson工具將map轉化成String,然后傳遞再解析成map

回答3:

map沒有實現序列化的接口,無法實現序列化,可以嘗試一下hashmap,hashmap原本就可以保存在bundle中,也可像樓上一樣使用parcelable實現這個速度也更快。

回答4:

用一個CacheUtil,把這map保存在內存中

相關文章: