java - 为什么仅在 Android 4 中出现 java.lang.Object[] cannot be cast to java.lang.String[][] 错误?

标签 java android serialization casting

我的意思是,我理解错误,但我没有在 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/

相关文章:

java - 排序后获取未排序 double 组的索引

android - 升级到 NDK 14 后无法在 C++ 代码中找到声明

android - 当单击通知列表上的清除按钮时,Android 是否提供回调

c# - 如何使用c#使用 'POST'方法获取JSON数据?

java - 更新到 gradle 3.3 后构建失败

java - 在 RxJava 中,如何在链接 observables 时传递变量?

返回新对象时的Java内存管理

android - 在 fragment 和 Activity 之间更新 ViewModel

带有 transient 字段的 Java 序列化

java - 休息服务在 POJO 中序列化 JSON 请求后如何调用方法?