我有这个:
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();
}