2016-05-10 6 views
-1

Я использую класс Tests как базовый класс, я создал еще три класса Test1, Test2, Test3, они расширяют класс Tests, затем у меня есть еще один класс, Государства, которые имеют Arraylist.Пропустить разные классы, используя Arraylist от одного действия к другому

Государство используется для сбора информации, содержащей список, с тестами, которые я хочу выполнить, поэтому я использую Arraylist и метод «add», чтобы добавить test1, test2 или test3 в список, затем я хочу отправить это государственный объект в деятельности В. Я реализовал parcelable интерфейс на классах Test1, test2, tEST3 и государства, но я получаю следующее исключение:

немаршалинга неизвестного типа кода 6357090 на смещение 300

Пожалуйста, можете предложить любой способ добиться этого. Важно собрать тесты на арраиста, я думаю, что есть проблема, спасибо.

+0

Что ваш класс Test продлить? – AnixPasBesoin

+0

Имеет ли 'Tests' также возможность выполнения? – 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

Как реализовать класс State и его удобный интерфейс, этот класс должен иметь Arraylist, который может содержать Test1, Test2 или Test3. Я помещаю этот класс в намерение и отправляю намерение другому классу, там, я получаю разборчивый arraylist и проверяю каждый объект с экземпляром, но я получаю эту ошибку. –

+0

Эти методы. Parcel.createTypedArrayList (Tests.CREATOR). Parcel.writeTypedList (тесты). – kpo

+0

Я пробовал dest.writeList() и dest.writeTypedList(), но ни один из них не работает, это настоящая проблема. –