我的意思是,我理解错误,但我没有在 Android Lollipop 和 Marshmallow 上看到错误,只有在 KitKat 上看到错误。
我正在通过 Intent 将一个二维数组从一个 Activity 发送到另一个 Activity ,如下所示:
String[][] bidimensionalArray = new String[3][3];
public void switchActivity(MenuItem item) {
Intent intent = new Intent(this, myActivity.class);
intent.putExtra("bidimensionalArray", bidimensionalArray);
startActivity(intent);
}
并且,在接收 Activity 中,我正在这样做:
bidimensionalArray = (String[][]) getIntent().getSerializableExtra("bidimensionalArray");
同样,这在 Android 5 和 6 上完美运行,但在 Android 4 上出错。
从 Lollipop 开始,序列化发生了什么变化?
最佳答案
显然这是 Android 4 中的一个错误,尚未修复。郑重声明,我是在 Android 4.3.1 上尝试的。
我通过将数组作为 Object[]
数组并将其复制到接收 Activity 中的 String[][]
数组来解决这个问题:
private Object[] arrayDataObject;
private String[][] arrayData;
arrayDataObject = (Object[]) getIntent().getSerializableExtra("myArray");
arrayData = Arrays.copyOf(arrayDataObject,arrayDataObject.length,String[][].class);
关于java - 为什么仅在 Android 4 中出现 java.lang.Object[] cannot be cast to java.lang.String[][] 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36039819/