我将参数从第一个活动传递到第二个活动,在第一个活动中我可以看到所有参数,但在第二个活动中,其中一个参数始终是0
,其余的我可以看到它们。我通过id
,url
,likes
,like参数始终为null,您可以帮助识别问题吗?
我正在传递这样的数据,在systemoutprint中我得到了值2
Listitem listitem = new Listitem(item.getOrder(), item.getId(), item.getUrl(), item.getUserName(), item.getLikes());
Intent intent = new Intent(mcontext,SingleObjectActivity.class);
System.out.println(item.getUrl()); //i can see correct value
System.out.println(item.getLikes());//i can see correct value
intent.putExtra("Object_list", (Parcelable) listitem);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mcontext.startActivity(intent);
此处是第二个活动,网址正确,likes
始终0
Listitem li = ((Listitem) getIntent().getParcelableExtra("Object_list"));
calc= li.getLikes();
id=li.getId();
System.out.println(li.getLikes());
这里是logcat
09-14 20:21:00.069 8874-8874/com.justedhak.www.i I/System.out: http://justedhak.com/old-files/images/uploaded_images57d985894b416.png
09-14 20:21:00.069 8874-8874/com.justedhak.www.i I/System.out: 2
09-14 20:21:00.069 8874-8874/com.justedhak.www.i I/Timeline: Timeline: Activity_launch_request id:com.justedhak.www.i time:16396709
09-14 20:21:00.199 8874-8874/com.justedhak.www.i I/System.out: 0
这里是listitem,我可能会对writeToParcel
public Listitem(int order, String id, String url, String userName, int likes) {
this.id = id;
this.url = url;
this.userName = userName;
this.order = order;
this.likes = likes;
}
@Override
public int describeContents() {
return 0;
}
public void setUrl(String url) {
this.url = url;
}
public String getUrl() {
return url;
}
public void setId(String id) {
this.id = id;
}
public String getId() {
return id;
}
public int getLikes() {
return likes;
}
public void setLikes(int likes) {
this.likes = likes;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.id);
// dest.writeString(this.name);
dest.writeString(this.url);
dest.writeInt(this.likes);
}
public static final Parcelable.Creator<Listitem> CREATOR = new Parcelable.Creator<Listitem>() {
public Listitem createFromParcel(Parcel in) {
return new Listitem(in);
}
public Listitem[] newArray(int size) {
return new Listitem[size];
}
};
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public int getOrder() {
return order;
}
public void setOrder(int order) {
this.order = order;
}
}
答案 0 :(得分:1)
您的意图代码似乎是正确的。
您没有显示从包裹代码中读取的内容,因此它也可能存在。
无论如何,parcelable代码是一件很痛苦的事情,所以我建议你使用一个自动生成它的库。这一个github.com/johncarl81/parceler所有你需要做的是@Parcel
注释并使用Parcels.wrap
和Parcels.unwrap
静态方法
示例:
intent.putExtra("Object_list", Parcels.wrap(listitem));
// then
Listitem li = (Listitem) Parcels.unwrap(getIntent().getParcelableExtra("Object_list"));