我尝试使用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 [[] []
而且我不确定为什么,因为其他用户似乎已经报道了这方面的成功。采取另一种方法会更好吗?
提前致谢。
答案 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];
}
}