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

时间:2014-07-24 13:16:06

标签: android arrays classcastexception

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

我使用的代码或多或少与其他StackOverflow用户报告为其工作的代码完全相同,因此我不确定为什么我会收到此错误。

我有一个2D数组,我将其添加到我的Bundle和Intent中,如下所示:

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);

并在下一个Activity中检索如下:

Bundle myBundle = getIntent().getExtras();
String[][] myNewString= (String[][]) myBundle.getSerializable("myString");

但是,在运行时我收到错误:

java.lang.ClassCastException:java.lang.Object []无法强制转换为java.lang.String [[] []

而且我不确定为什么,因为其他用户似乎已经报道了这方面的成功。采取另一种方法会更好吗?

提前致谢。

1 个答案:

答案 0 :(得分:2)

希望这有帮助....

在下一个活动中检索数据

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];
    }
}