问题:
我通过Intent将A activity 中的数据传递给B activity,之后B也通过Intent返回一个数据给A,数据是一个自定义的类,这个类中有一个成员是List集合,list集合中有一个map集合, 自定义实现了类序列化public class TableSeatNum implements Serializable,list集合也是用的ArrayList,但是map集合是hashmap<String,Object>.这时报错没有序列化的错误。后来将这个list集合中的hashmap自定义了一个类。并实现了序列化后如下。public class SerializableHashMap implements Serializable{ 还是报错,最后将HashMap<String,Object>换成HashMap<String,String>(这里可能要修改很多地方。因为之前都是用的Object)。问题就解决了。
使用集合存储数据时考虑的要通过Intent传递该集合的话,就把数据都序列化一下。
这是实现序列化的map:
public class SerializableHashMap implements Serializable {
// @Fields serialVersionUID : TODO
private static final long serialVersionUID = 1L;
private HashMap<String, String> map;
public SerializableHashMap(HashMap<String, String> map) {
this.map=map;
}
public HashMap<String, String> getMap() {
return map;
}
public void setMap(HashMap<String, String> map) {
this.map = map;
}
}
这是实现序列化的类:
public class TableSeatNum implements Serializable {
// @Fields serialVersionUID : TODO
private static final long serialVersionUID = 1L;
private String newid;
private String table;
private String seat;
private String num;
private ArrayList<SerializableHashMap> menulist;
public String getNewid() {
return newid;
}
public void setNewid(String newid) {
this.newid = newid;
}
public String getTable() {
return table;
}
public void setTable(String table) {
this.table = table;
}
public String getSeat() {
return seat;
}
public void setSeat(String seat) {
this.seat = seat;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public ArrayList<SerializableHashMap> getMenulist() {
return menulist;
}
public void setMenulist(ArrayList<SerializableHashMap> menulist) {
this.menulist = menulist;
}
}
总结:
A activity通过按钮打开B activity,并通过Intent传递数据给B,B 的返回按钮中也通过Intent传递数据给A,传递的数据存到一个自己定义的类中,这个类需要实现序列化。这个类中有一个list集合,集合中存储的是map集合,list集合选择ArrayList(已经实现了序列化),map(还没有序列化)集合自己重新写一个类实现序列化,构造函数中接收一个hashmap,hashmap中存的数据可以是<String,String>这样的基本数据类型,传递<String,(实现序列化的类)>这样的map集合也行。这样就把需要传递的数据都序列化了。