Android - 包裹:无法编组价值

时间:2016-06-16 14:25:03

标签: android parcelable parcel

我试图通过Parcelable活动传递数据。这是我的代码:

public class Player implements Parcelable {

public static final Parcelable.Creator<Player> CREATOR = new Parcelable.Creator<Player>() {
    public Player createFromParcel(Parcel in) {
        return new Player(in);
    }

    public Player[] newArray(int size) {
        return new Player[size];
    }
};
private String name;
private List<Card> listCards;

public Player(String namePlayer) {
    name = namePlayer;
    listCards = new ArrayList<>();
}

private Player(Parcel in) {
    // This order must match the order in writeToParcel()
    name = in.readString();
    in.readList(listCards, null);
    // Continue doing this for the rest of your member data
}

@Override
public int describeContents() {
    return 0;
}

@Override
public void writeToParcel(Parcel dest, int flags) {
    dest.writeString(name);
    dest.writeList(listCards);
}

每当我运行此代码时,都会收到错误:

java.lang.RuntimeException: Parcel: unable to marshal value com.antoinedelia.lebarbu_versionalcool.Card@ec54bb

你知道可能出现什么问题吗?

由于

1 个答案:

答案 0 :(得分:7)

@Override
public void writeToParcel(Parcel dest, int flags) {
  dest.writeString(name);
  dest.writeList(listCards);
}

由于Card类未实现Parcelable,您无法执行writeList/readList。它仅适用于Parcelable对象列表。