如何使用Parcelable发送多维数组?

3
我应该使用Parcelable吗?因为它似乎不接受多维数组,比如int[][]。
(我需要在不同的活动之间传递数据)

你能提供更多的上下文吗?否则你可能会得到很少(有用的)答案。 - Thomas
2个回答

0

在Java中,数组是协变的(它们都扩展自Object)。 因此,您可以将一个数组的数组(如int[][])分配给一个Object[]数组,仅仅因为一个数组就是一个对象:int[][]表示int[]的数组,而int[]是一个Object

使用泛型,如果您有一个类型T和一个数组T[],将T定义为int[]将导致该数组恰好是int[][]

希望这能帮到您。


2
我真的不太明白。你能提供一个示例,展示如何将多维数组从一个活动传递到另一个活动吗?我能使用 Bundle 吗? - Aron

0

我知道现在来说可能有点晚了,但这是我使用的解决方案:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接