在Android中将Parcelables数组写入Parcel
我正在尝试使用writeParcelableArray编写一个将Parcelable实现为Parcel的对象数组。
我正在尝试编写的对象(正如您所期望的那样)被定义为:
public class Arrival implements Parcelable { /* All the right stuff in here... this class compiles and acts fine. */ }
而我正试图将它们写成一个“包裹”:
@Override public void writeToParcel(Parcel dest, int flags) { Arrival[] a; /* some stuff to populate "a" */ dest.writeParcelableArray(a, 0); }
当Eclipse尝试编译时,我收到错误:
绑定不匹配:Parcel类型的generics方法writeParcelableArray(T [],int)不适用于参数(Arrival [],int)。 推断类型Arrival不是有界参数的有效替代
我完全不明白这个错误信息。 Parcelable
是一个接口(不是类),所以你不能扩展它。 有人有主意吗?
更新:当将Parcelable
的ArrayList
放入Intent
时,我遇到了同样的问题:
Intent i = new Intent(); i.putParcelableArrayListExtra("locations", (ArrayList) locations);
收益率:
方法putParcelableArrayListExtra(String,ArrayList )方法不适用于参数(String,ArrayList )
这可能是因为Location
是我上面正在处理的类(包装Arrival
的那个),但我不这么认为。
实际上,您可以扩展一个界面,看起来您需要这样做。 writeParcelableArray中的generics参数要求扩展接口(而不是接口本身)。 尝试创建一个接口MyParcelable扩展Parcelable。 然后使用接口声明你的数组,但是impl应该是你的Arrival扩展MyParcelable。
事实certificate它只是想让我构建一个Parcelables数组。 要使用问题中的示例:
@Override public void writeToParcel(Parcel dest, int flags) { Parcelable[] a; /* some stuff to populate "a" with Arrival objects (which implements Parcelable) */ dest.writeParcelableArray(a, 0); }
我知道问题已经解决,但我的解决方案是其他的,所以我在这里发布:在我的情况下,Eclipse自动导入错误的包,因为类名称含糊(有些dom.Comment而不是我的Comment类)。