我应该使用Parcelable吗?因为它似乎不接受多维数组,比如int[][]。
(我需要在不同的活动之间传递数据)
(我需要在不同的活动之间传递数据)
在Java中,数组是协变的(它们都扩展自Object)。
因此,您可以将一个数组的数组(如int[][]
)分配给一个Object[]
数组,仅仅因为一个数组就是一个对象:int[][]
表示int[]
的数组,而int[]
是一个Object
。
使用泛型,如果您有一个类型T
和一个数组T[]
,将T
定义为int[]
将导致该数组恰好是int[][]
。
希望这能帮到您。
我知道现在来说可能有点晚了,但这是我使用的解决方案:
private void write2DimArray(int[][] array, Parcel parcel) {
parcel.writeInt(array.length);
for(int[] arrayDim1 : array) {
parcel.writeInt(arrayDim1.length);
parcel.writeIntArray(arrayDim1);
}
}
private int[][] read2DimArray(Parcel parcel) {
int[][] array = new int[parcel.readInt()][];
for(int i = 0; i < array.length; i++) {
int arraySize = parcel.readInt();
array[i] = new int[arraySize];
parcel.readIntArray(array[i]);
}
return array;
}