我正在尝试使用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);


并在下一个活动中检索,如下所示:

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

07-24 16:28