2011-12-23 30 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; 
}