android - Activity之间传递Map<String,Object>
迷茫
迷茫 2017-04-17 17:31:33
[Android讨论组]

listview.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public 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都实现了的呀!请问是哪里错了哦!

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(4)
黄舟

ReleaseContents类下使用到的类也需要实现Serializable接口,例如你的ReleaseContents类里面有个属性是Version类,那么这个Version类也许实现Serializable接口。

回到你的例子,很明显,在ReleaseContents类有个属性是Bitmap类,Bitmap并没有实现Serializable接口,而是实现了Parcelable接口。

ringa_lee

使用Android的序列化类,而非是传统的java序列化类
Parcelable 这个。或者利用Gson工具将map转化成String,然后传递再解析成map

黄舟

map没有实现序列化的接口,无法实现序列化,可以尝试一下hashmaphashmap原本就可以保存在bundle中,也可像楼上一样使用parcelable实现这个速度也更快。

阿神

用一个CacheUtil,把这map保存在内存中

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号