2016-05-10 16 views
-1

私は、クラスTestsをベースクラスとして使用しています。私はさらに3つのクラスTest1、Test2、Test3を作成し、Testsクラスを拡張し、 Arraylistを持つ国。一つのアクティビティから別のアクティビティにArraylistを使って別のクラスを渡す

Statesは、私が実行したいテストのリストを含むたくさんの情報を集めるために使用されるので、Arraylistとメソッドを使用して "add"を実行してtest1、test2、またはtest3をリストに追加します。

アンマーシャリング未知のタイプのコード6357090をで300

オフセット:私はクラスのTest1、Test2を、Test3はと米国のparcelableインターフェイスを実装しますが、私は次の例外を取得していましたアクティビティBに、この状態のオブジェクトを送信します

これを達成する方法を示唆してください、それはarraylistのテストを集めることが重要です、私は問題があると思う、ありがとう。

+0

あなたのテストクラスが何を拡張していますか? – AnixPasBesoin

+0

'テスト 'はパーセル可能なものも実装していますか? – kpo

+0

私は他のクラスから拡張していませんが、私は –

答えて

-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が必要です。私はこのクラスをインテントに入れて別のクラスにインテントを送っています。そこではパーセル可能なアーリーリストを取得し、それぞれのオブジェクトをインスタンスにチェックしますが、そのエラーが発生します。 –

+0

これらのメソッド。 Parcel.createTypedArrayList(Tests.CREATOR)。 Parcel.writeTypedList(テスト)。 – kpo

+0

私はdest.writeList()とdest.writeTypedList()を試しましたが、どちらもうまくいきませんでした。それは本当の問題です。 –

関連する問題