如何在活动之间传递二维数组?

时间:2015-11-11 15:32:26

标签: java android arrays android-intent

我正在尝试将2d数组的int传递给nextactivity。我试图使用bundle.putSerializable(就像发送一个字符串数组),但我有空指针异常。任何想法??

这是我的代码。 (tosend)

Intent myIntent=new Intent(context,activityvogel.class);
                    Bundle mBundle = new Bundle();
                    mBundle.putSerializable("cost",cost);
                    myIntent.putExtras(mBundle);
                    startActivity(myIntent);}

(要获取)

Bundle extras = getIntent().getExtras();
        final int cost[][]= (int[][]) extras.getSerializable("cost");

2 个答案:

答案 0 :(得分:0)

将二维数组转换为字符串二维数组并像发送一样

要进行转换:您必须手动使用双层进行转换 for()循环:

String[][] converted = new String[cost.length][];
for(int index = 0; index < cost.length; index++) {
    converted[index] = new String[cost[index].length];
    for(int subIndex = 0; subIndex < cost[index].length; subIndex++){
        converted[index][subIndex] = Integer.toString(cost[index][subIndex]);
    }
}

发送:

mBundle .putSerializable("cost", converted);

获得:

String[][] converted = (String[][]) mBundle.getSerializable("cost");

然后再将其转换为int 2D数组。

String [] []扩展了Object,而int和int [] []不是

答案 1 :(得分:0)

希望这可以获取数据:

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

然后转回int ...