2016-05-10 86 views
-1

我使用类Tests作为基类,我创建了三个更多的类Test1,Test2,Test3,它们扩展了Tests类,然后我又多了一个类,有Arraylist的国家。从一个活动到另一个活动使用Arraylist传递不同的类

国家是用来收集一系列信息,包括一个列表与我想要执行的测试,所以我使用Arraylist和方法“添加”将test1,test2或test3添加到列表中,然后我想要这个State对象发送到活动B.我实现了在类的Test1,Test2的,Test3的和国家,但parcelable界面,我发现了一个异常:

解组未知类型代码6357090偏移量300

请提出任何方法来达到此目的,重要的是要收集ArrayList上的测试,我认为这存在问题,谢谢。

+0

什么是您的测试类扩展? – AnixPasBesoin

+0

'Tests'是否也可以实现parcelable? – kpo

+0

它不从其他类扩展,除非我假设它的对象类java –

回答

-1

对不起,这是太长了评论,所以我张贴作为一个答案

由于Test1的扩展测试,测试应该haveit自己Parcelable实现。 这个实现是通过使用super由其所有的“子”类调用的。例如(这是我在我的应用程序使用):

测试类

public class Tests implements Parcelable { 
    private int Id; 
    private String Name; 

    // parcelable 
    protected Tests(Parcel in) { 
     Id = in.readInt(); 
     Name = in.readString(); 
    } 

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

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

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

    @Override 
    public void writeToParcel(Parcel dest, int flags) { 
    dest.writeInt(Id); 
    dest.writeString(Name); 
    } 
} 

的Test1类

public class Test1 extends Tests implements Parcelable { 

    private int Score; 

    // parcelable 
    protected Test1(Parcel in) { 
    super(in); 
    Score = in.readInt(); 
    } 

    @Override 
    public void writeToParcel(Parcel dest, int flags) { 
    super.writeToParcel(dest, flags); 
    dest.writeInt(Score); 
    } 

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

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

    @Override 
    public Test1[] newArray(int size) { 
     return new Test1[size]; 
    } 
    }; 
} 
+0

如何实现States类及其可分段接口,该类必须具有一个可包含Test1,Test2或Test3的Arraylist。我把这个类放到了一个intent中,然后把意图发送给另一个类,在那里,我得到了parcelable arraylist,并检查每个对象是否是实例,但是我得到了这个错误。 –

+0

这些方法。 Parcel.createTypedArrayList(Tests.CREATOR)。 Parcel.writeTypedList(测试)。 – kpo

+0

我试过dest.writeList()和dest.writeTypedList()但它们都不起作用,这是真正的问题。 –

相关问题