我有一个课程可以帮助我节省时间,所以我不必总是写长班名:
public class ImageBucket extends ArrayList<LoadableGeoLocationImage> implements Serializable{
private static final long serialVersionUID = -4275196266297013629L;
public ImageBucket() {}
public ImageBucket(Collection<? extends LoadableGeoLocationImage> collection) {
super(collection);
}
public ImageBucket(int capacity) {
super(capacity);
}
public ImageBucket(ImageBucket ... buckets){
super();
for(ImageBucket bucket: buckets){
this.addAll(bucket);
}
}
}
我使用此类将数据从活动A传递到活动B:
ImageBucket images = this.getImages();
System.err.println(images.getClass().getName()); // Prints: .....ImageBucket
Intent intent = new Intent(this, DetailActivity.class);
intent.putExtra(DetailActivity.INTENT_ARG_IMAGES, images);
但是当我尝试获取我的数据时,我得到一个ClassCastException:
Serializable seriImgBucket = this.getIntent().getExtras().getSerializable(INTENT_ARG_IMAGES);
System.err.println(seriImgBucket.getClass().getName()); //Prints: ....ArrayList
this.images = (ImageBucket) seriImgBucket;
为什么android会返回我的基类,而不是我添加到额外的那个,我该如何解决?
答案 0 :(得分:0)
在我看来,通过这段代码
Serializable seriImgBucket = this.getIntent().getExtras().getSerializable(INTENT_ARG_IMAGES);
ImageBucket类已被强制转换为其超类,并且此过程不可逆转。 所以,我建议你像这样修改它
ImageBucket seriImgBucket = this.getIntent().getExtras().getSerializable(INTENT_ARG_IMAGES);
此外,它可以帮助您保存一些代码!祝你好运!