在活动之间发送2维数组,但Bundle不起作用

时间:2015-03-06 15:24:05

标签: java android arrays

好吧这里有一个更好的描述我的问题我想第一个有点模糊,很难理解。 我有这个DataSheet0,它由几个名为MeetingNames,TopicNames和TopicTimes的数组组成。它们都是String数组!

 String[][] DataSheet0 = new String[][]{MeetingNames,TopicNames,TopicTimes};

我现在需要将此数组发送到名为OpenMeeting.class的第二个Activity 这是我的尝试,我不知道它的工作与否,因为我无法收到它,我想我必须捆绑它?怎么样?

发送时间:

  Intent OpenMeeting = new Intent(getBaseContext(), OpenMeeting.class);
  OpenMeeting.putExtra("Meeting Data",DataSheet0);
  startActivity(OpenMeeting);

希望收到:

  String[][]DataSheet;
  Intent DataFromMainActivity = getIntent();
  DataSheet = DataFromMainActivity.getSerializableExtra("Meeting Data");

接收部分抛出一个错误,因为该数组不是serialzable对象。你能不能给我写一个发送二维数组的解决方案代码,以及如何将它解包回原来的二维数组!

修改 我试过这样解决它。现在它不会抛出任何错误。但是现在数据在数据中的位置在哪里?现在原始的二维数组是否以相同的顺序保存在接收部件的新String [] []数据表中?

发送

Intent OpenMeeting = new Intent(getBaseContext(), OpenMeeting.class)
            Bundle mBundle = new Bundle();
            mBundle.putSerializable("Meeting Data",DataSheet0);
            OpenMeeting.putExtras(mBundle);

收到

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

1 个答案:

答案 0 :(得分:0)

我建议你把一个带有meetingNames,topicNames,topicTimes的模型作为变量放入其中,然后创建一个ArrayList模型并发送/接收它。