如何将对象数组发送到新意图

时间:2014-06-17 17:54:22

标签: android arrays android-intent

我正在尝试将一组对象发送到一个新意图,但问题是我不知道如何一次发送整个数组。我设法使其工作的方法是在for循环中逐个对象地添加对象,在第二个活动中我必须逐个获取它们,如下所示:

主要活动:

        Intent newIntent = new Intent(mainA.this, secondA.class);
        for(int i=0;i<numberOfObjects;i++)
            newIntent.putExtra("object"+i,myObjects[i]);
        newIntent.putExtra("length", x);
        startActivity(newIntent);

第二项活动:

        Serializable n = getIntent().getSerializableExtra("length");
        int x = Integer.parseInt(n.toString());
        myObjects = new objClass[x];
        for(int i=0;i<x;i++)
            myObjects[i] = (objClass) getIntent().getSerializableExtra("object"+i);

即使这种方法有效,并且得到了正确的结果,是不是有更好/更快/更清洁的解决方案?(我搜索了很多,但是没有找到更好的方法,也许我没有& #39;不知道到底要找什么。)

2 个答案:

答案 0 :(得分:1)

使您的对象可序列化并将所有对象放在Arraylist中并发送它.ArrayList本身实现了可序列化。

 Intent newIntent = new Intent(mainA.this, secondA.class);
 newIntent.putExtra("list",listOfObjets);
 startActivity(newIntent);

第二项活动:

   ArrayList<YourObjects> list =  (ArrayList<YourObjects>)getIntent().getSerializableExtra("list");

答案 1 :(得分:0)

您好,您也可以尝试这个..创建setter getter类,它将设置并获取您的对象。接下来创建setter getter class的数组列表.next使用for循环中的set方法将所有对象添加到arraylist中。接下来使用setArguments将该arraylist对象添加到bundle中。 同样,您可以使用getArguments访问该捆绑包。