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