如何将2维数组发送到另一个活动

时间:2016-05-07 08:05:44

标签: android arrays android-activity bundle

我正在使用捆绑包从一个活动向另一个活动发送一个2D数组,但在接收端我收到错误

  

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

提供您考虑的代码

    obj_res = (EditText) findViewById(R.id.et_result);
    Bundle bundle = getIntent().getExtras();
    String[][] table = (String[][])bundle.getSerializable("table");

    for(int a=0;a<30;a++) { //to display array data
                for (int b = 0; b < 4; b++) {

                    obj_res.append(String.valueOf(table[a][b]));
                }
                obj_res.append("\n");
            }
如果还有其他方便的方法来传递2D数组

,请帮助我解决这个问题

3 个答案:

答案 0 :(得分:0)

发送时:

Bundle b=new Bundle();
b.putSerializable("arr", your2dArray);
Intent i = new Intent(this, OtherActivity.class);
i.putExtras(b);
startActivity(i);

收到:

Bundle b=this.getIntent().getExtras();
Object[] objectArray = (Object[]) b.getSerializable("arr");
String[][] arr = new String[objectArray.length][];
for(int i=0;i<objectArray.length;i++) {
    arr[i]=(String[]) objectArray[i];
}

答案 1 :(得分:0)

开始新活动(发送String [] []和String):

String[][] arrayToSend=new String[3][30];
String stringToSend="Hello";
Intent i = new Intent(this, NewActivity.class);

i.putExtra("key_string",stringToSend);

Bundle mBundle = new Bundle();
mBundle.putSerializable("key_array_array",  arrayToSend);
i.putExtras(mBundle);

startActivity(i);

要在NewActivity.onCreate中访问:

String sReceived=getIntent().getExtras().getString("key_string");

String[][] arrayReceived=null;
Object[] objectArray = (Object[]) getIntent().getExtras().getSerializable("key_array_array");
if(objectArray!=null){
    arrayReceived = new String[objectArray.length][];
    for(int i=0;i<objectArray.length;i++){
        arrayReceived[i]=(String[]) objectArray[i];
    }
}

答案 2 :(得分:0)

跨活动发送数据串行对象的简单方法是使用谷歌的GSON库

首先将对象转换为json文本然后将文本发送到第二个活动,并在第二个活动中将该json转换回对象

希望这可能有所帮助。