试图通过parcelable在意图之间编写类对象

时间:2013-08-30 13:59:06

标签: java android eclipse constructor parcelable

我在实现Parcelable时遇到了一些麻烦。我是这样做的:

public class Player implements Parcelable{
    String name;
    int score;
    @Override
    public int describeContents() {
        // TODO Auto-generated method stub
        return 0;
    }
    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(name);
        dest.writeInt(score);
    }

    public Player(Parcel source){
        score = source.readInt();
        name = source.readString();
    }
}

public class MyCreator implements Parcelable.Creator<Player> {

    @Override
    public Player createFromParcel(Parcel source) {
        return new Player(source);
    }

    @Override
    public Player[] newArray(int size) {
        return new Player[size];
    }

}

这是实现Parcelable的整个代码。现在我正在尝试创建一个新的类对象:

Player newPlayer = new Player(null);
newPlayer.name = text;
newPlayer.score = 0;
playersParceledData.add(newPlayer);
zacniIgro.putParcelableArrayListExtra("parceledData", playersParceledData);

困扰我的是这条线:

Player newPlayer = new Player(null);

我刚刚说“空”的事实还好吗?或者我必须在那些()之间插入其他东西?我关注this example,但这里没有解释。它说应该像这样创建一个新对象:

Player newPlayer = new Player();

但是因为我做了一个构造函数,所以我不允许这样做。

1 个答案:

答案 0 :(得分:0)

为您未使用Parcel构建对象的用例创建其他构造函数,例如

public class Player implements Parcelable{
    /* ... */

    public Player(Parcel source){
        /* ... */
    }

    public Player(int score, String name){
        this.score = score;
        this.name = name; 
    }
}

然后,您可以构建来自Parcel并使用intString的对象:

final Player aPlayer = new Player(10000, "SomeRandomPlayerName");

另外,您在编写时会按相反的顺序阅读intString