您的位置:首页技术文章
文章详情页

android - Activity之间传递Map<String,Object>

【字号: 日期:2024-09-07 15:53:16浏览:21作者:猪猪

问题描述

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保存在内存中

相关文章: