0
我使用parcelable将一个对象从一个活动转移到另一个活动,但它显示为空 在另一活动中检索该对象。 有什么建议吗?如何使用parcelable将对象从一项活动转移到另一项活动?
下面的代码:
public class TPackage implements Parcelable {
// private static final long serialVersionUID = 1L;
private int cost;
private String name;
private int totalChannels;
private HashMap<String, Channel> channelList;
public int getCost() {
return cost;
}
public void setCost(int cost) {
this.cost = cost;
}
public int getTotal_channels() {
return totalChannels;
}
public void setTotal_channels(int total_channels) {
this.totalChannels = total_channels;
}
public HashMap<String, Channel> getList() {
return channelList;
}
public void setList(HashMap<String, Channel> list) {
this.channelList = list;
}
public void put(String name, Channel c) {
channelList.put(name, c);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel dest, int flags) {
}
public static final Parcelable.Creator<TPackage> CREATOR = new Parcelable.Creator<TPackage>() {
public TPackage createFromParcel(Parcel in) {
return new TPackage();
}
public TPackage[] newArray(int size) {
return new TPackage[size];
}
};
}
想你的代码,并仍然得到错误:09-13 19:24:15.507: E/AndroidRuntime(3674):致命例外:main 09-13 19:24:15.507:E/AndroidRuntime(3674):java.lang.RuntimeException:包裹:无法封送值[email protected] 09-13 19:24:15.507:E/AndroidRuntime(3674):\t at android.os.Parcel.writeValue(Parcel.java:1137) 09-13 19:24:15.507:E/AndroidRuntime(3674): \t at android.os.Parcel.writeMapInternal(Parcel.java:493) 09-13 19:24:15.507:E/AndroidRuntime(3674):\t at android.os.Parcel.writeMap(Parcel.java:477) 09-13 19:24:15.507:E/AndroidRuntime(3674):\t at ... –
@ user461844确保您的对象中没有字段为空。我试过上面的代码并且工作正常。如果你继续得到错误给出错误行 –
我已经修改了代码,如下所示:public void writeToParcel(Parcel dest,int flags){ \t dest.writeInt(12); \t dest.writeString(“as”); \t dest.writeInt(2); \t //通过包裹传输HashMap的最简单方法 \t Bundle bundle = new Bundle(); \t bundle.putSerializable(“channelList”,new HashMap()); \t dest.writeBundle(bundle); \t} ...读取时获取对象为null。 –