在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是一个接口(不是类),所以你不能扩展它。 有人有主意吗?

更新:当将ParcelableArrayList放入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类)。