简体   繁体   English

为什么我只能在 Android 4 中得到 java.lang.Object[] cannot be cast to java.lang.String[][] 错误?

[英]Why do I get a java.lang.Object[] cannot be cast to java.lang.String[][] error only in Android 4?

I mean, I understand the error, but I don't see the error on Android Lollipop nor Marshmallow, only on KitKat.我的意思是,我理解错误,但我在 Android Lollipop 或 Marshmallow 上都没有看到错误,只有在 KitKat 上才看到错误。

I am sending a bidimensional array from an activity to another through an intent, like this:我通过一个意图从一个活动向另一个活动发送一个二维数组,如下所示:

String[][] bidimensionalArray = new String[3][3];

public void switchActivity(MenuItem item) {
    Intent intent = new Intent(this, myActivity.class);
    intent.putExtra("bidimensionalArray", bidimensionalArray);
    startActivity(intent);
}

And, on the receiving activity, I am doing this:而且,在接收活动中,我这样做:

bidimensionalArray = (String[][]) getIntent().getSerializableExtra("bidimensionalArray");

Again, this works perfectly on Android 5 and 6, but is erroring out on Android 4.同样,这在 Android 5 和 6 上完美运行,但在 Android 4 上出错。

What changed with regards to serialization from Lollipop onward?从 Lollipop 开始,序列化发生了什么变化?

So apparently this is a bug in Android 4 that has not been fixed yet.很明显,这是 Android 4 中的一个尚未修复的错误。 For the record, I was trying this on Android 4.3.1.为了记录,我是在 Android 4.3.1 上尝试这个的。

I solved this by getting the array as an Object[] array and copying it to a String[][] array like this in the receiving activity:我通过将数组作为Object[]数组并将其复制到String[][]数组中来解决这个问题,如下所示在接收活动中:

private Object[] arrayDataObject;
private String[][] arrayData;

arrayDataObject = (Object[]) getIntent().getSerializableExtra("myArray");
arrayData = Arrays.copyOf(arrayDataObject,arrayDataObject.length,String[][].class);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何解决此错误java.lang.Object []无法转换为java.lang.String []? - How would i fix this Error java.lang.Object[] cannot be cast to java.lang.String[]? ClassCastException:java.lang.Object []无法强制转换为java.lang.String [] android - ClassCastException: java.lang.Object[] cannot be cast to java.lang.String[] android android ArrayMap引发java.lang.ClassCastException:无法将java.lang.String强制转换为java.lang.Object [] - android ArrayMap throws java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Object[] (java.lang.String)不能应用于(java.lang.Object) - (java.lang.String) cannot be applied to (java.lang.Object) java.lang.Object []无法转换为java.lang.String [] - java.lang.Object[] cannot be converted to java.lang.String[] ClassCastException:java.lang.Object []无法转换为java.lang.String [] [] - ClassCastException: java.lang.Object[] cannot be cast to java.lang.String[][] AsyncTask:ClassCastException:java.lang.Object []无法强制转换为java.lang.String [] - AsyncTask: ClassCastException: java.lang.Object[] cannot be cast to java.lang.String[] [Android]对象无法强制转换为java.lang.String Asynctask - [Android]Object cannot be cast to java.lang.String Asynctask 获取错误 java.lang.ClassCastException: java.lang.String 无法转换为 [Ljava.lang.Object; - getting error java.lang.ClassCastException: java.lang.String cannot be cast to [Ljava.lang.Object; Java explicit casting on list.get(0) (incompatible types: java.lang.Object cannot be converted to java.lang.String) - Java explicit casting on list.get(0) (incompatible types: java.lang.Object cannot be converted to java.lang.String)
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM