问题描述
我正在尝试将 Parcelable 对象作为附加对象放入意图中,并将其传递给下一个 Activity,它不会崩溃,但对象发生了巨大变化。我在单击 Fragment 中 RecyclerView 中的项目并从中打开 Activity 时发送。
我是这样发送的:
AdminProfile adminProfile = list.get(position).admin;
Intent intent = new Intent(view.getContext(),ClosedChatActivity.class);
intent.putExtra("chat",adminProfile);
view.getContext().startActivity(intent);
我是这样理解的:
adminProfile = (AdminProfile) getIntent().getExtras().getParcelable("chat");
这里是班级:
public class AdminProfile implements Parcelable {
public static final Creator<AdminProfile> CREATOR = new Creator<AdminProfile>() {
@Override
public AdminProfile createFromParcel(Parcel in) {
return new AdminProfile(in);
}
@Override
public AdminProfile[] newArray(int size) {
return new AdminProfile[size];
}
};
public Long idUser;
public String name;
public String professio;
public String description;
public List<WebLink> webLinks;
public Long idOficina;
protected AdminProfile(Parcel in) {
if (in.readByte() == 0) {
idUser = null;
} else {
idUser = in.readLong();
}
name = in.readString();
professio = in.readString();
description = in.readString();
webLinks = in.createTypedArrayList(WebLink.CREATOR);
if (in.readByte() == 0) {
idOficina = null;
} else {
idOficina = in.readLong();
}
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writetoParcel(Parcel parcel,int i) {
parcel.writeLong(idUser);
parcel.writeString(name);
parcel.writeString(professio);
parcel.writeString(description);
parcel.writeLong(idOficina);
parcel.writeList(webLinks);
}
}
我不明白为什么,但是当我发送对象时我有 UserId=3
,但是当我收到它时是 userId=55834574848
。有什么想法吗?
解决方法
Android Studio 会自动填充 Parcelable 函数,读取第一个字节会将其搞砸。
变化
if (in.readByte() == 0) {
idUser = null;
} else {
idUser = in.readLong();
}
为了
idUser = in.readLong();
修复它。