Java 在Android中将包裹数组写入包裹
我正在尝试编写一个对象数组,这些对象实现为一个using 我尝试编写的对象定义(如您所料)如下: 我正试着把它们写进一个“包裹”里:Java 在Android中将包裹数组写入包裹,java,android,parcelable,parcel,Java,Android,Parcelable,Parcel,我正在尝试编写一个对象数组,这些对象实现为一个using 我尝试编写的对象定义(如您所料)如下: 我正试着把它们写进一个“包裹”里: @Override public void writeToParcel(Parcel dest, int flags) { Arrival[] a; /* some stuff to populate "a" */ dest.writeParcelableArray(a, 0); } 当Eclipse尝试编译此文件时,我得到错误: 绑定不
@Override
public void writeToParcel(Parcel dest, int flags) {
Arrival[] a;
/* some stuff to populate "a" */
dest.writeParcelableArray(a, 0);
}
当Eclipse尝试编译此文件时,我得到错误:
绑定不匹配:通用方法
类型的writeParcelableArray(T[],int)
该包裹不适用于以下情况:
参数(到达[],int)。这个
推断的到达类型无效
替换有界参数
Parcelable
是一个接口(不是类),因此无法扩展它。有人有什么想法吗
更新:我在将Parcelable
s的ArrayList
放入Intent
时遇到了基本相同的问题:
Intent i = new Intent();
i.putParcelableArrayListExtra("locations", (ArrayList<Location>) locations);
Intent i=newintent();
i、 putParcelableArrayListExtra(“位置”,(ArrayList)位置);
收益率:
类型意图中的方法putParcelableArrayListExtra(String,ArrayList<?extends Parcelable>)不适用于参数(String,ArrayList这可能是因为
Location
是我在上面工作的类(包装Arrival
s),但我不这么认为。实际上,您可以扩展一个接口,看起来您需要这样做。writeParcelableArray中的泛型参数要求一个扩展接口(而不是接口本身)。尝试创建接口MyParcelable扩展Parcelable。然后使用接口声明您的数组,但impl应该是您的Arrival extends MyParcelable。结果它只是想让我构建一个Parcelable数组。使用问题中的示例:
@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类)。如我所说,使用接口声明数组。很高兴你解决了。
@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);
}