java - 如何将 Parcelable 与 setter 和 getter 一起使用?

标签 java android parcelable

我使用 Parcelable 实现,因为使用 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);
        }

最佳答案

我们需要这个方法,因为它会覆盖方法,并且如果您不删除它并手动创建 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 - 如何将 Parcelable 与 setter 和 getter 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58245879/

相关文章:

java - sonar-project.properties 文件中的问题

android - 如何读取 Android (ARM) 中的 L2 缓存命中/未命中率?

java - 具有 map 属性的 Parcelable 嵌套类会导致应用程序崩溃

android - 将图像从 Android 上传到 Python 服务器

java - Activity android sdk 中的滑动屏幕

android - Parcelize 在对象和枚举上提示 "Parcelable should be a class"

android - 实现需要上下文的 Parcelable 类

java - java中的鼠标位置

Java Servlets - 如何检测用户是否来自移动设备?

java - 将 Eclipse Web 应用程序连接到 sql 2012 数据库