Как передать 2D-массив в два раза между действиями?

Мне нужно передать двумерный массив double между действиями, это то, что я написал до сих пор: в первом действии (отправителе):

Intent intent =new Intent(MapsActivity.this, RoutePath.class); Bundle b = new Bundle(); b.putSerializable("other_locations", other_locations); intent.putExtras(b); startActivity(intent); 

Во втором (приемник):

 Intent intent = getIntent(); Bundle b = intent.getExtras(); double[][] other_locations=(double[][]) b.getSerializable("other_locations"); 

Но я получил ClassCastException, я делаю что-то неправильно?

Преобразуйте двойной 2D-массив в String 2D-массив и отправьте его так же, как и вы:

Отправлять :

 b.putSerializable("array", other_locations_string); 

Получить :

 String[][] value = (String[][]) b.getSerializable("array"); 

А затем снова преобразуйте его в двойной массив 2d .

Причина такого поведения заключается в том, что Java (и, следовательно, Android) не позволяет вам вводить объекты в примитивные типы или массивы примитивных типов. Зачем? Поскольку Java считает допустимым листинг, который преобразует объект суперкласса в объект подкласса или наоборот. String[][] расширяет Object , а double и double[][] – нет.

Попробуй это

Преобразуйте 2D-массив в Hashmap, а затем используйте его

 Map<Double, Double> map = new HashMap<Double, Double>(other_locations.length); for (Double[] mapping : other_locations) { map.put(mapping[0], mapping[1]); } 

И установите карту в качестве дополнительной цели и получите дополнительную во втором действии