2017-08-28 70 views
1

检索列表 这是我的模型类: 如果我把名单<Child>到一个意向,然后我从其他活动

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对象的数组。

谢谢。

回答

3

尝试在每个子类中创建一个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对象只能调用AnimalCREATOR,所以所有的对象都是Animals

+0

好!!!!!这是问题所在。现在它可以工作。谢谢你,兄弟 :) – MDP

相关问题