使用Arraylist从一个活动到另一个活动传递不同的类

时间:2016-05-10 01:15:58

标签: android arraylist parcelable

我使用类Tests作为基类,我创建了三个类,Test1,Test2,Test3,它们扩展了Tests类,然后我又增加了一个类,其中有一个Arraylist。

状态用于收集大量信息,包括包含我想要执行的测试的列表,因此我使用Arraylist和方法"添加"要将test1,test2或test3添加到列表中,然后我想将此State对象发送到活动B.我已经在类Test1,Test2,Test3和States上实现了parcelable接口但我得到了下一个例外:

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

请,可以建议任何方法来实现这一点,收集arraylist的测试很重要,我认为存在问题,谢谢。

1 个答案:

答案 0 :(得分:-1)

很抱歉,这个评论太长了,所以我发布了一个答案

由于Test1扩展了测试,测试应该具有自己的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];
    }
  };
}