繁体   English   中英

读取 ArrayList 或可打包 class 列表的问题

[英]Problem to read an ArrayList or List of a parcelable class

我有这个可打包的 class:

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

并在另一个 class 中实现 parcelable 并具有此变量: List<EventInviteWorkingHours> 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 并以不同的方式读写,但从来没有用过

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

第一个可打包的 class 现在可序列化 class:

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

在另一个 class 中,它实现了 parcelable 并具有以下变量: List<EventInviteWorkingHours> workingHours;

将像这样读取和写入该变量:

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


dest.writeSerializable((Serializable) workingHours);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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