Android 读取自定义类列表时包裹解组未知类型代码

Android 读取自定义类列表时包裹解组未知类型代码,android,parcelable,parcel,Android,Parcelable,Parcel,我试图将我的自定义类实现为parcelable,但在从parcelable中读取/写入这些类的列表时遇到问题。我有三节课,测验,问答 这给了我一个问题类下的错误,在线: in.readList(answers, Answer.class.getClassLoader()); 这是我的课, 测验: 公共类测验实现可包裹{ 私人名单问题; 公众问答游戏(包裹内){ 问题=新的ArrayList(); in.readList(疑问,疑问.class.getClassLoader()); } @凌驾

我试图将我的自定义类实现为parcelable,但在从parcelable中读取/写入这些类的列表时遇到问题。我有三节课,测验,问答

这给了我一个问题类下的错误,在线:

 in.readList(answers, Answer.class.getClassLoader());
这是我的课, 测验:

公共类测验实现可包裹{
私人名单问题;
公众问答游戏(包裹内){
问题=新的ArrayList();
in.readList(疑问,疑问.class.getClassLoader());
}
@凌驾
公共int描述内容(){
返回0;
}
@凌驾
公共无效书面包裹(包裹,内部i){
包裹。书面列表(问题);
}
public static final Parcelable.Creator=新建Parcelable.Creator(){
公共测验createFromParcel(包裹中){
返回新测验(in);
}
公共测验[]新数组(整数大小){
返回新测验[大小];
}
};
}
问题:

public class Question implements Parcelable {

    private String question;
    private List<Answer> answers;

    public Question(Parcel in) {
        answers = new ArrayList<Answer>();
        in.readList(answers, Answer.class.getClassLoader());
    }

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

    @Override
    public void writeToParcel(Parcel parcel, int i) {
        parcel.writeString(question);
        parcel.writeList(answers);
    }

    public static final Parcelable.Creator<Question> CREATOR = new Parcelable.Creator<Question>() {

        public Question createFromParcel(Parcel in) {
            return new Question(in);
        }

        public Question[] newArray(int size) {
            return new Question[size];
        }
    };
}
公共类问题实现可包裹{
私有字符串问题;
私人名单答案;
公众问题(包裹内){
answers=newarraylist();
in.readList(answers,Answer.class.getClassLoader());
}
@凌驾
公共int描述内容(){
返回0;
}
@凌驾
公共无效书面包裹(包裹,内部i){
包裹。书面记录(问题);
包裹。书面列表(答案);
}
public static final Parcelable.Creator=新建Parcelable.Creator(){
公共问题createFromParcel(地块中){
返回新问题(in);
}
公共问题[]新数组(整数大小){
返回新问题[大小];
}
};
}
答复:

public class Answer implements Parcelable {
    private String answer;
    private boolean isCorrect = false;

    public Answer(String answer) {
        this.answer = answer;
    }

    public Answer(Parcel in) {
       answer =  in.readString();
       isCorrect = in.readByte() != 0;
    }

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

    @Override
    public void writeToParcel(Parcel parcel, int i) {
        parcel.writeString(answer);
        parcel.writeByte((byte) (isCorrect ? 1 : 0));
    }
    public static final Parcelable.Creator<Answer> CREATOR = new Parcelable.Creator<Answer>() {

        public Answer createFromParcel(Parcel in) {
            return new Answer(in);
        }

        public Answer[] newArray(int size) {
            return new Answer[size];
        }
    };
}
公共类答案实现可包裹{
私有字符串应答;
私有布尔值isCorrect=false;
公共应答(字符串应答){
这个答案=答案;
}
公众答覆(包裹内){
answer=in.readString();
isCorrect=in.readByte()!=0;
}
@凌驾
公共int描述内容(){
返回0;
}
@凌驾
公共无效书面包裹(包裹,内部i){
包裹。书面记录(回答);
parcel.writeByte((字节)(isCorrect?1:0));
}
public static final Parcelable.Creator=新建Parcelable.Creator(){
公共应答createFromParcel(包裹中){
返回新答案(in);
}
公共应答[]新数组(整数大小){
返回新答案[大小];
}
};
}
堆栈跟踪:

   09-03 01:03:43.018  20659-20659/auf.ccs.appschool E/AndroidRuntime﹕ FATAL EXCEPTION: main
        java.lang.RuntimeException: Unable to start activity ComponentInfo{auf.ccs.appschool/auf.ccs.appschool.QuizActivity}: java.lang.RuntimeException: Parcel android.os.Parcel@40516de0: Unmarshalling unknown type code 6815831 at offset 332
                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
                at android.app.ActivityThread.access$1500(ActivityThread.java:117)
                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
                at android.os.Handler.dispatchMessage(Handler.java:99)
                at android.os.Looper.loop(Looper.java:130)
                at android.app.ActivityThread.main(ActivityThread.java:3691)
                at java.lang.reflect.Method.invokeNative(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:507)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
                at dalvik.system.NativeStart.main(Native Method)
         Caused by: java.lang.RuntimeException: Parcel android.os.Parcel@40516de0: Unmarshalling unknown type code 6815831 at offset 332
                at android.os.Parcel.readValue(Parcel.java:1913)
                at android.os.Parcel.readListInternal(Parcel.java:2092)
                at android.os.Parcel.readList(Parcel.java:1414)
                at auf.ccs.appschool.Items.Question.<init>(Question.java:25)
                at auf.ccs.appschool.Items.Question$1.createFromParcel(Question.java:67)
                at auf.ccs.appschool.Items.Question$1.createFromParcel(Question.java:64)
                at android.os.Parcel.readParcelable(Parcel.java:1981)
                at android.os.Parcel.readValue(Parcel.java:1846)
                at android.os.Parcel.readListInternal(Parcel.java:2092)
                at android.os.Parcel.readList(Parcel.java:1414)
                at auf.ccs.appschool.Items.Quiz.<init>(Quiz.java:28)
                at auf.ccs.appschool.Items.Quiz$1.createFromParcel(Quiz.java:44)
                at auf.ccs.appschool.Items.Quiz$1.createFromParcel(Quiz.java:41)
                at android.os.Parcel.readParcelable(Parcel.java:1981)
                at auf.ccs.appschool.Items.Video.<init>(Video.java:113)
                at auf.ccs.appschool.Items.Video$1.createFromParcel(Video.java:132)
                at auf.ccs.appschool.Items.Video$1.createFromParcel(Video.java:130)
                at android.os.Parcel.readParcelable(Parcel.java:1981)
                at android.os.Parcel.readValue(Parcel.java:1846)
                at android.os.Parcel.readMapInternal(Parcel.java:2083)
                at android.os.Bundle.unparcel(Bundle.java:208)
                at android.os.Bundle.getParcelable(Bundle.java:1100)
                at auf.ccs.appschool.QuizActivity.onCreate(QuizActivity.java:40)
                at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
                at android.app.ActivityThread.access$1500(ActivityThread.java:117)
                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
                at android.os.Handler.dispatchMessage(Handler.java:99)
                at android.os.Looper.loop(Looper.java:130)
                at android.app.ActivityThread.main(ActivityThread.java:3691)
                at java.lang.reflect.Method.invokeNative(Native Method)
09-03 01:03:43.018 20659-20659/auf.ccs.appschool E/AndroidRuntime﹕ 致命异常:主
java.lang.RuntimeException:无法启动活动组件信息{auf.ccs.appschool/auf.ccs.appschool.quizaActivity}:java.lang.RuntimeException:Parcel android.os。Parcel@40516de0:在偏移量332处解组未知类型代码6815831
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)上
在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)上
在android.app.ActivityThread.access,售价1500美元(ActivityThread.java:117)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)上
位于android.os.Handler.dispatchMessage(Handler.java:99)
位于android.os.Looper.loop(Looper.java:130)
位于android.app.ActivityThread.main(ActivityThread.java:3691)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:507)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:847)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
在dalvik.system.NativeStart.main(本机方法)
原因:java.lang.RuntimeException:Parcel android.os。Parcel@40516de0:在偏移量332处解组未知类型代码6815831
位于android.os.Parcel.readValue(Parcel.java:1913)
位于android.os.Parcel.readListInternal(Parcel.java:2092)
位于android.os.Parcel.readList(Parcel.java:1414)
在auf.ccs.appschool.Items.Question.(Question.java:25)
在auf.ccs.appschool.Items.Question$1.createFromParcel(Question.java:67)
在auf.ccs.appschool.Items.Question$1.createFromParcel(Question.java:64)上
位于android.os.Parcel.readParcelable(Parcel.java:1981)
位于android.os.Parcel.readValue(Parcel.java:1846)
位于android.os.Parcel.readListInternal(Parcel.java:2092)
位于android.os.Parcel.readList(Parcel.java:1414)
在auf.ccs.appschool.Items.quick.(quick.java:28)
在auf.ccs.appschool.Items.quick$1.createFromParcel(quick.java:44)
在auf.ccs.appschool.Items.quick$1.createFromParcel(quick.java:41)
位于android.os.Parcel.readParcelable(Parcel.java:1981)
在auf.ccs.appschool.Items.Video.(Video.java:113)
在auf.ccs.appschool.Items.Video$1.createFromParcel(Video.java:132)
在auf.ccs.appschool.Items.Video$1.createFromParcel(Video.java:130)
位于android.os.Parcel.readParcelable(Parcel.java:1981)
位于android.os.Parcel.readValue(Parcel.java:1846)
位于android.os.Parcel.readMapInternal(Parcel.java:2083)
位于android.os.Bundle.unparcel(Bundle.java:208)
位于android.os.Bundle.getParcelable(Bundle.java:1100)
在auf.ccs.appschool.QuizActivity.onCreate(QuizActivity.java:40)中
位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)上
在安卓
   09-03 01:03:43.018  20659-20659/auf.ccs.appschool E/AndroidRuntime﹕ FATAL EXCEPTION: main
        java.lang.RuntimeException: Unable to start activity ComponentInfo{auf.ccs.appschool/auf.ccs.appschool.QuizActivity}: java.lang.RuntimeException: Parcel android.os.Parcel@40516de0: Unmarshalling unknown type code 6815831 at offset 332
                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
                at android.app.ActivityThread.access$1500(ActivityThread.java:117)
                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
                at android.os.Handler.dispatchMessage(Handler.java:99)
                at android.os.Looper.loop(Looper.java:130)
                at android.app.ActivityThread.main(ActivityThread.java:3691)
                at java.lang.reflect.Method.invokeNative(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:507)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
                at dalvik.system.NativeStart.main(Native Method)
         Caused by: java.lang.RuntimeException: Parcel android.os.Parcel@40516de0: Unmarshalling unknown type code 6815831 at offset 332
                at android.os.Parcel.readValue(Parcel.java:1913)
                at android.os.Parcel.readListInternal(Parcel.java:2092)
                at android.os.Parcel.readList(Parcel.java:1414)
                at auf.ccs.appschool.Items.Question.<init>(Question.java:25)
                at auf.ccs.appschool.Items.Question$1.createFromParcel(Question.java:67)
                at auf.ccs.appschool.Items.Question$1.createFromParcel(Question.java:64)
                at android.os.Parcel.readParcelable(Parcel.java:1981)
                at android.os.Parcel.readValue(Parcel.java:1846)
                at android.os.Parcel.readListInternal(Parcel.java:2092)
                at android.os.Parcel.readList(Parcel.java:1414)
                at auf.ccs.appschool.Items.Quiz.<init>(Quiz.java:28)
                at auf.ccs.appschool.Items.Quiz$1.createFromParcel(Quiz.java:44)
                at auf.ccs.appschool.Items.Quiz$1.createFromParcel(Quiz.java:41)
                at android.os.Parcel.readParcelable(Parcel.java:1981)
                at auf.ccs.appschool.Items.Video.<init>(Video.java:113)
                at auf.ccs.appschool.Items.Video$1.createFromParcel(Video.java:132)
                at auf.ccs.appschool.Items.Video$1.createFromParcel(Video.java:130)
                at android.os.Parcel.readParcelable(Parcel.java:1981)
                at android.os.Parcel.readValue(Parcel.java:1846)
                at android.os.Parcel.readMapInternal(Parcel.java:2083)
                at android.os.Bundle.unparcel(Bundle.java:208)
                at android.os.Bundle.getParcelable(Bundle.java:1100)
                at auf.ccs.appschool.QuizActivity.onCreate(QuizActivity.java:40)
                at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
                at android.app.ActivityThread.access$1500(ActivityThread.java:117)
                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
                at android.os.Handler.dispatchMessage(Handler.java:99)
                at android.os.Looper.loop(Looper.java:130)
                at android.app.ActivityThread.main(ActivityThread.java:3691)
                at java.lang.reflect.Method.invokeNative(Native Method)
answers = new ArrayList<Answer>();
in.readList(answers, Answer.class.getClassLoader());
parcel.writeString(question);
parcel.writeList(answers);
public Question(Parcel in) {
    question = in.readString();
    answers = new ArrayList<Answer>();
    in.readList(answers, Answer.class.getClassLoader());
}