[英]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.