我正在尝试将类型为 Team
的对象传递到我应用中的另一个 Activity
。
团队
类:
public class Team implements Parcelable {
String teamName;
//Name and Link to competition of Team
TreeMap<String, String> competitions;
//Name of competition with a map of matchdays with all games to a matchday
TreeMap<String, HashMap<Integer, ArrayList<Event>>> matchDays;
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(teamName);
dest.writeMap(competitions);
}
public static final Parcelable.Creator<Team> CREATOR = new Parcelable.Creator<Team>() {
public Team createFromParcel(Parcel in) {
return new Team(in);
}
public Team[] newArray(int size) {
return new Team[size];
}
};
private Team(Parcel in) {
teamName = in.readString();
in.readMap(competitions, Team.class.getClassLoader());
}
}
我在编码时得到一个 RuntimeException:
TreeMap<String, HashMap<Integer, ArrayList<Event>>> matchDays;
如何将嵌套的 TreeMap 与类的其余部分一起传递?
最佳答案
String
、TreeMap
和HashMap
都实现了Serializable
接口(interface)。您可能会考虑在您的 Team
类中实现 Serializable
并以这种方式在 Activity 之间传递它。这样做将使您可以直接从 Bundle
或 Intent
加载对象,而无需手动解析它们。
public class Team implements Serializable {
String teamName;
//Name and Link to competition of Team
TreeMap<String, String> competitions;
//Name of competition with a map of matchdays with all games to a matchday
TreeMap<String, HashMap<Integer, ArrayList<Event>>> matchDays;
不需要额外的解析代码。
(编辑:ArrayList
还实现了 Serializable
,因此此解决方案取决于 Event
类是否可序列化。)
关于android - 如何使用 parcelable 将对象从一个 Android Activity 发送到另一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11369029/