如果我把名单到一个意向,然后我从其他活动
问题描述:
检索列表
public class Animal implements Parcelable{
//parcelable implementation
}
public class Cat extends Animal {
}
public class Dog extends Animal {
}
我想从一个Activity
通过动物的Array
到另一个使用Intent.putExtra(String name, Parcelable [] value)
。
所以我这样做:
List<Animal> animals = new Array[3];
animals[0] = new Dog();
animals[1] = new Cat();
animals[2] = new Dog();
Intent.putExtra("myAnimals", animals).
当我尝试从其他Activity
与检索数组:
Parcelable[] p = (Parcelable[])data.getParcelableArrayExtra("myAnimals");
我切勿得到一个数组是这样的:
我得到这样一个数组:[0]Animal
[1]Animal
[2]Animal
我不明白,如果我的逻辑是不正确,或当你传递一个Array
像我这样一个Intent
它变成SuperClass
对象的数组。
谢谢。
答
尝试在每个子类中创建一个CREATOR
字段,例如,
public static final Parcelable.Creator<Cat> CREATOR
= new Parcelable.Creator<Cat>() {
public Cat createFromParcel(Parcel in) {
return new Cat(in);
}
public Cat[] newArray(int size) {
return new Cat[size];
}
};
也许你只有这个领域的基础类Animal
,所以当Android的试图重新从Parcelable
对象只能调用Animal
的CREATOR
,所以所有的对象都是Animals
。
好!!!!!这是问题所在。现在它可以工作。谢谢你,兄弟 :) – MDP