Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android中将包裹数组写入包裹_Java_Android_Parcelable_Parcel - Fatal编程技术网

Java 在Android中将包裹数组写入包裹

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尝试编译此文件时,我得到错误: 绑定不

我正在尝试编写一个对象数组,这些对象实现为一个using

我尝试编写的对象定义(如您所料)如下:

我正试着把它们写进一个“包裹”里:

@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);
}