2016-05-10 131 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()但它們都不起作用,這是真正的問題。 –

相關問題