【问题标题】:Problem to read an ArrayList or List of a parcelable class读取 Parcelable 类的 ArrayList 或 List 的问题
【发布时间】:2020-06-08 13:31:59
【问题描述】:

我有这个 parcelable 类:

public class EventInviteWorkingHours implements Parcelable {

    int dayOfWeek;
    String begin;
    String finish;

    public EventInviteWorkingHours() {

    }

    protected EventInviteWorkingHours(Parcel in) {
        dayOfWeek = in.readInt();
        begin = in.readString();
        finish = in.readString();
    }

    public static final Creator<EventInviteWorkingHours> CREATOR = new Creator<EventInviteWorkingHours>() {
        @Override
        public EventInviteWorkingHours createFromParcel(Parcel in) {
            return new EventInviteWorkingHours(in);
        }

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

    public int getDayOfWeek() {
        return dayOfWeek;
    }

    public void setDayOfWeek(int dayOfWeek) {
        this.dayOfWeek = dayOfWeek;
    }

    public String getBegin() {
        return begin;
    }

    public void setBegin(String begin) {
        this.begin = begin;
    }

    public String getFinish() {
        return finish;
    }

    public void setFinish(String finish) {
        this.finish = finish;
    }

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

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeInt(dayOfWeek);
        dest.writeString(begin);
        dest.writeString(finish);
    }
}

在另一个实现 parcelable 并具有此变量的类中: List&lt;EventInviteWorkingHours&gt; workingHours;

我这样写和读这个变量:

dest.writeTypedList(workingHours);

in.readTypedList(workingHours, EventInviteWorkingHours.CREATOR);

但是,当我通过意图获取包含此变量的项目时,会出现此错误:

java.lang.RuntimeException: Parcel android.os.Parcel@d7fbbfb: Clearing the unknown type code 7274612 at offset 788

有人知道如何解决吗?我已经尝试过使用 ArrayList 并以不同的方式读写,但从来没有用过

【问题讨论】:

    标签: java android android-studio parcelable


    【解决方案1】:

    我还没有找到任何使用 parcelable 的解决方案,但我使用了可序列化并且效果很好:

    第一个 Parcelable 类现在是可序列化类:

    public class EventInviteWorkingHours implements Serializable {
    
        int dayOfWeek;
        String begin;
        String finish;
    
        public EventInviteWorkingHours() {
    
        }
    
        public int getDayOfWeek() {
            return dayOfWeek;
        }
    
        public void setDayOfWeek(int dayOfWeek) {
            this.dayOfWeek = dayOfWeek;
        }
    
        public String getBegin() {
            return begin;
        }
    
        public void setBegin(String begin) {
            this.begin = begin;
        }
    
        public String getFinish() {
            return finish;
        }
    
        public void setFinish(String finish) {
            this.finish = finish;
        }
    }
    

    在另一个实现 parcelable 并具有此变量的类中: List&lt;EventInviteWorkingHours&gt; workingHours;

    会像这样读写那个变量:

    workingHours = (List<EventInviteWorkingHours>) in.readSerializable();
    
    
    dest.writeSerializable((Serializable) workingHours);
    
    

    【讨论】:

      猜你喜欢
      • 2014-06-26
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      • 2014-04-22
      • 1970-01-01
      • 1970-01-01
      • 2015-01-31
      • 1970-01-01
      相关资源
      最近更新 更多