Должен ли я использовать Parcelable? Потому что, кажется, не принимать многомерные массивы, такие как, например, междунар [] []Как я могу отправить многомерные массивы с Parcelable?
(мне нужно отправить данные между различными видами деятельности)
Должен ли я использовать Parcelable? Потому что, кажется, не принимать многомерные массивы, такие как, например, междунар [] []Как я могу отправить многомерные массивы с Parcelable?
(мне нужно отправить данные между различными видами деятельности)
Массивы ковариантны в Java (и все они распространяются Object). Таким образом, вы можете присвоить массив массивов (например, int[][]
) к Object[]
массива, просто потому, что массив является объектом: int[][]
означает массив int[]
и int[]
является Object
.
С дженерики, если у вас есть тип T
и массив T[]
, определяя T
, как int[]
приведет этот массив быть точно int[][]
.
Надеюсь, это поможет.
Я действительно не понимаю. Не могли бы вы предоставить образец, который показывает, как вы переносите многомерный массив из одного вида деятельности в другой? Могу ли я использовать Bundle? – Aron
Я знаю, что это довольно поздно в игру, но это решение, которое я использовал:
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;
}
Не мог бы вы предоставить более некоторый контекст? В противном случае вы можете получить очень мало (полезных) ответов. – Thomas