Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.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 使用包通过intent发送2D数组时的ClassCastException_Android_Arrays_Classcastexception - Fatal编程技术网

Android 使用包通过intent发送2D数组时的ClassCastException

Android 使用包通过intent发送2D数组时的ClassCastException,android,arrays,classcastexception,Android,Arrays,Classcastexception,我试图使用Bundle.putSerializable通过Intent发送一个2D数组,但在检索它时遇到ClassCastException错误 我使用的代码或多或少都是其他StackOverflow用户报告的为他们工作的代码,因此我不确定为什么会出现此错误 我有一个2D数组,我将其添加到我的包中,目的如下: String[][] myString= new String[myGroup.length][myGroup[0].length]; //Data is added to String

我试图使用Bundle.putSerializable通过Intent发送一个2D数组,但在检索它时遇到ClassCastException错误

我使用的代码或多或少都是其他StackOverflow用户报告的为他们工作的代码,因此我不确定为什么会出现此错误

我有一个2D数组,我将其添加到我的包中,目的如下:

String[][] myString= new String[myGroup.length][myGroup[0].length];
//Data is added to String here
Bundle myBundle = new Bundle();
myBundle.putSerializable("myString", myString);
intent.putExtras(myBundle);
Bundle myBundle = getIntent().getExtras();
String[][] myNewString= (String[][]) myBundle.getSerializable("myString");
并在下一个活动中检索,如下所示:

String[][] myString= new String[myGroup.length][myGroup[0].length];
//Data is added to String here
Bundle myBundle = new Bundle();
myBundle.putSerializable("myString", myString);
intent.putExtras(myBundle);
Bundle myBundle = getIntent().getExtras();
String[][] myNewString= (String[][]) myBundle.getSerializable("myString");
但是,在运行时,我会得到以下错误:

java.lang.ClassCastException:java.lang.Object[]不能强制转换为java.lang.String[[]]

我也不知道为什么,因为其他用户似乎都在报道这方面取得了成功。我会不会采取另一种方法更好


提前感谢。

希望这有助于……

在下一个活动中检索数据,如下所示

String[][] myNewString=null;
Object[] objectArray = (Object[]) getIntent().getExtras().getSerializable("myString");
if(objectArray!=null){
    myNewString = new String[objectArray.length][];
    for(int i=0;i<objectArray.length;i++){
        myNewString[i]=(String[]) objectArray[i];
    }
}
String[]myNewString=null;
对象[]对象数组=(对象[])getIntent().getExtras().getSerializable(“myString”);
if(objectArray!=null){
myNewString=新字符串[objectArray.length][];

对于(int i=0;i错误通常出现在哪个API级别?它是在根目录4.4上运行的,所以我相信是级别19。这是我准备实现的解决方案;但是,我很好奇为什么要直接转换为字符串[][]据报道,它为一些人工作,但显然不是为我。有什么想法吗?这是有效的,我把它标记为正确的答案。但仍然好奇为什么它是必要的。