Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在活动之间传递一个二维数组?_Android_Arrays_Android Activity - Fatal编程技术网

Android 如何在活动之间传递一个二维数组?

Android 如何在活动之间传递一个二维数组?,android,arrays,android-activity,Android,Arrays,Android Activity,我需要在活动之间传递一个二维数组double,这是我到目前为止写的: 在第一个活动中(发件人): 在第二个(接收器)中: 但是我得到了ClassCastException,我做错什么了吗?试试这个 将2D数组转换为Hashmap,然后使用它 Map<Double, Double> map = new HashMap<Double, Double>(other_locations.length); for (Double[] mapping : other_location

我需要在活动之间传递一个二维数组double,这是我到目前为止写的: 在第一个活动中(发件人):

在第二个(接收器)中:

但是我得到了ClassCastException,我做错什么了吗?

试试这个

将2D数组转换为Hashmap,然后使用它

Map<Double, Double> map = new HashMap<Double, Double>(other_locations.length);
for (Double[] mapping : other_locations)
{
    map.put(mapping[0], mapping[1]);
}
Map Map=newhashmap(其他位置.长度);
对于(双[]映射:其他位置)
{
put(映射[0],映射[1]);
}

将map设置为intent extra,并在第二个活动中获取额外数据

将双2D数组转换为字符串2D数组,并像您所做的那样发送:

发送:

b.putSerializable("array", other_locations_string);
要获得:

String[][] value = (String[][]) b.getSerializable("array");
然后再次将其转换为双2d数组


这种行为的原因是Java(以及Android)不允许将对象强制转换为基本类型或基本类型的数组。为什么?因为Java考虑一个有效的强制转换,它将一个超类对象转换为一个子类对象,反之亦然<代码>字符串[]扩展
对象
,而双精度和
双精度[]
不扩展。

您需要设置ArrayExtra。。在google中搜索关于Samether的信息是否没有设置二维阵列的阵列Extra将二维阵列转换为一维阵列?您还可以传递第一个维度的长度。@user2137817检查我的回答此行为的原因是Java(以及后来的Android)不允许您将对象强制转换为基本数据类型或基本数据类型数组,如double或int。这是因为字符串[]扩展对象,而double[]不允许。
b.putSerializable("array", other_locations_string);
String[][] value = (String[][]) b.getSerializable("array");