2011-12-23 58 views
3

我应该使用Parcelable吗?因为这似乎并不接受例如像INT多维数组[] []如何使用Parcelable发送多维数组?

(我需要活动之间发送数据)

+0

你能否提供一些更多的背景?否则,你可能会得到很少(有用的)答案。 – Thomas 2011-12-23 13:49:28

回答

0

数组是协变Java中(他们都继承对象)。 因此,您可以将阵列(如int[][])分配给Object[]阵列,只是因为阵列是对象:int[][]表示int[]int[]的阵列是Object

有了泛型,如果你有一个类型T和阵列T[],定义T作为int[]将导致该数组中确切地说是int[][]

希望这会有所帮助。

+2

我真的不明白。您能否提供一个示例,说明如何将多维数组从一个活动转移到另一个活动?我可以使用捆绑包吗? – Aron 2012-04-12 17:02:05

1

我知道,这是比较晚的比赛,但是这是我使用的解决方案:

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