2011-12-23 5 views
3

Должен ли я использовать Parcelable? Потому что, кажется, не принимать многомерные массивы, такие как, например, междунар [] []Как я могу отправить многомерные массивы с Parcelable?

(мне нужно отправить данные между различными видами деятельности)

+0

Не мог бы вы предоставить более некоторый контекст? В противном случае вы можете получить очень мало (полезных) ответов. – Thomas

ответ

0

Массивы ковариантны в Java (и все они распространяются Object). Таким образом, вы можете присвоить массив массивов (например, int[][]) к Object[] массива, просто потому, что массив является объектом: int[][] означает массив int[] и int[] является Object.

С дженерики, если у вас есть тип T и массив T[], определяя T, как int[] приведет этот массив быть точно int[][].

Надеюсь, это поможет.

+2

Я действительно не понимаю. Не могли бы вы предоставить образец, который показывает, как вы переносите многомерный массив из одного вида деятельности в другой? Могу ли я использовать Bundle? – Aron

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

 Смежные вопросы

  • Нет связанных вопросов^_^