***Error关于为android中的类编写Parcelable

Posted

技术标签:

【中文标题】***Error关于为android中的类编写Parcelable【英文标题】:***Error on writing Parcelable for a class in android 【发布时间】:2018-01-22 02:22:53 【问题描述】:

我有一个名为 Student 的班级。在这个类中,我有一个相同类的对象字段(即学生类)。当我将这个类对象作为 Parcelable 发送到我的应用程序的另一个组件时。它抛出 ***Error。

所以我的问题是如何使包含同一类字段的此类类的 Parcelable。 这是我的代码

import android.os.Parcel;
import android.os.Parcelable;

import java.util.ArrayList;

public class Chapter implements Parcelable
    private String chapterId;
    private String chapterNumber;
    private String chapterName;
    private String src;
    private int startTime;
    private int endTime;
    private Chapter parentChapter;
    private ArrayList<Chapter> chapterList;


    public Chapter()

    protected Chapter(Parcel in) 
        chapterId = in.readString();
        chapterNumber = in.readString();
        chapterName = in.readString();
        src = in.readString();
        startTime = in.readInt();
        endTime = in.readInt();
        parentChapter = in.readParcelable(Chapter.class.getClassLoader());
        chapterList = in.createTypedArrayList(Chapter.CREATOR);
    

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

        @Override
        public Chapter[] newArray(int size) 
            return new Chapter[size];
        
    ;

    String getChapterName() 
        return chapterName;
    

    void setChapterName(String chapterName) 
        this.chapterName = chapterName;
    

    public String getSrc() 
        return src;
    

    public void setSrc(String src) 
        this.src = src;
    

    void setChapterNumber(String chapterNumber) 
        this.chapterNumber = chapterNumber;
    

    void setChapterId(String chapterId) 
        this.chapterId = chapterId;
    

    ArrayList<Chapter> getChapterList() 
        return chapterList;
    

    void setChapterList(ArrayList<Chapter> chapterList) 
        this.chapterList = chapterList;
    

    public int getStartTime() 
        return startTime;
    

    public void setStartTime(int startTime) 
        this.startTime = startTime;
    

    void setEndTime(int endTime) 
        this.endTime = endTime;
    

    public Chapter getParentChapter() 
        return parentChapter;
    

    public void setParentChapter(Chapter parentChapter) 
        this.parentChapter = parentChapter;
    


    @Override
    public int describeContents() 
        return 0;
    

    @Override
    public void writeToParcel(Parcel dest, int flags) 
        dest.writeString(chapterId);
        dest.writeString(chapterNumber);
        dest.writeString(chapterName);
        dest.writeString(src);
        dest.writeInt(startTime);
        dest.writeInt(endTime);
        dest.writeParcelable(parentChapter, flags);
        dest.writeTypedList(chapterList);
    

【问题讨论】:

***.com/questions/36492256/… 【参考方案1】:

删除dest.writeParcelable(parentChapter, flags);

添加

chapterList = in.createTypedArrayList(Chapter.CREATOR);

for( Chapter c : chapterList ) 
  c.setParentChapter(this);

【讨论】:

以上是关于***Error关于为android中的类编写Parcelable的主要内容,如果未能解决你的问题,请参考以下文章

1. 用C++或Java写一个关于堆栈的类描述,并为堆栈的压栈(push)和出栈(pop)操作编写方法

关于android软件中的so文件!

如何从 Flutter 中的平台特定模块(Android)登录

关于数组和指针的一道例题的解读

关于python的面向对象

Adobe AIR ANE 中的 FragmentActivity