【问题标题】:How to send an array of objects to a new intent如何将对象数组发送到新意图
【发布时间】:2014-06-17 17:54:22
【问题描述】:

我正在尝试将一组对象发送到一个新的意图,但问题是我不知道如何一次发送整个数组。我设法让它工作的方法是在 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);

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

【问题讨论】:

  • 不要在android中使用序列化使用parceable。序列化很慢
  • 这里接受的答案似乎真的很好stackoverflow.com/questions/7181526/…
  • @Illegal Argument 以前从未听说过 parceable,感谢您提供的信息(和链接),我想我需要做一些研究!

标签: android arrays android-intent


【解决方案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");

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2016-02-14
      • 1970-01-01
      • 2018-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多