我有这个:

public double[][] mRoute;


我需要将其设置为Parcelable,但是我不确定执行此操作的最佳方法。

看来将其转换为List然后编写不是正确的方法。

更新:

这是从@yuku的答案中编译得到的。

    out.writeInt(mRoute.length); // store the length
    for (int i = 0; i < mRoute.length; i++) {
        out.writeInt(mRoute[i].length);
        out.writeDoubleArray(mRoute[i]);
    }
    mRoute = new double[in.readInt()][];
    for (int i = 0; i < mRoute.length; i++) {
         mRoute[i] = new double[in.readInt()];
         in.readDoubleArray(mRoute[i]);
    }


我没有尝试过,只是将其编译即可,这是一个开始。

最佳答案

您不能将double [] []设为Parcelable,但是可以创建一个实现Parcelable并包含double [] []的类。

在writeToParcel(Parcel dest)上,执行以下操作:

dest.writeInt(mRoute.length); // store the length
for (int i = 0; i < mRoute.length; i++) {
    dest.writeDoubleArray(mRoute[i]);
}


在readFromParcel(Parcel in)中,执行以下操作:

mRoute = new double[][in.readInt()];
for (int i = 0; i < mRoute.length; i++) {
    mRoute[i] = in.readDoubleArray();
}

07-28 04:21