如何使用setter和getter的parcelable?

问题描述 投票:0回答:1

我正在使用可分包实现,因为通过putParcelableArrayListExtra传递ArrayList更容易,但是protected Song(Parcel in) and public void writeToParcel(Parcel dest, int flags)的目的是什么>

我的包裹类

public class Song implements Parcelable {

    private long id = 0;
    private String data = "";
    private String title = "";
    private String artist = "";

    public Song(){
    }

    protected Song(Parcel in) {
          id = in.readLong();
          data = in.readString();
          title = in.readString();
          artist = in.readString();
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeLong(id);
        dest.writeString(data);
        dest.writeString(title);
        dest.writeString(artist);
    }

    public void setId(long songId){ this.id = songId; }
    public long getId(){
        return id;
    }
    public void setData(String data) { this.data = data; }
    public String getData(){return data;}

    //Optional meta data

    public void setTitle(String title){ this.title = title; }
    public String getTitle() { return title; }

    public void setArtist(String artist){
        this.artist = artist;
    }
    public String getArtist() {
        return artist;
    }

这是什么用途,如果我没有将任何参数传递给Song()构造函数,还是可以将其保留为空,我还需要添加它吗?

protected Song(Parcel in) {
            id = in.readLong();
            data = in.readString();
            title = in.readString();
            artist = in.readString();
        }

 @Override
        public void writeToParcel(Parcel dest, int flags) {
            dest.writeLong(id);
            dest.writeString(data);
            dest.writeString(title);
            dest.writeString(artist);
        }

我正在使用可拆分实现,因为使用putParcelableArrayListExtra传递ArrayList更容易,但是受保护的Song(Parcel in)和public void writeToParcel(...)的目的是什么?

[我们需要此方法,因为它会覆盖方法,并且如果您不删除此方法并手动创建setter和getter,则在使用getter和setter的帮助下它将自动运行

@Override
public void writeToParcel(Parcel dest, int flags) {
     dest.writeLong(id);
     dest.writeString(data);
     dest.writeString(title);
     dest.writeString(artist);
}
java android parcelable
1个回答
0
投票

[我们需要此方法,因为它会覆盖方法,并且如果您不删除此方法并手动创建setter和getter,则在使用getter和setter的帮助下它将自动运行

© www.soinside.com 2019 - 2024. All rights reserved.