简体   繁体   中英

Trying to sand class object between intents by parcelable

I have a bit trouble implementing Parcelable. Here's how I did it:

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];
    }

}

This was the whole code implementing Parcelable. Now I'm trying to create a new class object:

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

This is the line that is bothering me:

Player newPlayer = new Player(null);

Is the fact that I just insrted "null" okay? Or do I have to insert something else between those ()? I was following this example and this isn't explained in it. It says that a new object should be created like this:

Player newPlayer = new Player();

But I am not allowed to do this since I made a constructor.

Create an additional constructor for use cases you're not using Parcel to construct your object, for example

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

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

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

Then you can construct objects both from Parcel and using an int and an String :

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

Also, you read the int and the String in inverse order as you write them.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM