【问题标题】:How can i transfer ArrayList between Activities?如何在活动之间传输 ArrayList?
【发布时间】:2015-02-13 15:53:59
【问题描述】:

我正在尝试在活动之间转移 ArrayList,但我尝试过的任何方法都不起作用。
这是我最好的镜头,但这也没有用。

我在这里调用外部操作:

getComics getComicInfo = new getComics(charName, pageNum);
getComicInfo.execute();
getIntentData()

我在这里尝试输入数据,但问题是由于这是一个外部操作,所以我无法通过 activits 切换。

    if(counter == comicInfoObject.length()){

        Log.v("check arr length =>" , Integer.toString(comicList.size()));
        Intent i = new Intent();
        i.putExtra("comicArrayList", (ArrayList<Comics>)comicList);
        }

在这里我试图检索数据,但它没有进入“if”

public void getIntentData(){
        Intent i = getIntent();
        if(i != null && i.hasExtra("comicArrayList")){
            comicList2 = i.getParcelableExtra("comicArrayList");
            int size = comicList2.size();
        }
    }

第一个代码是我调用使用 api 的外部类并在底线创建 arrayList 第二个代码在外部类中,我试图用 putExtra
传递 arrayList 第三个代码是我试图在 getIntentData() 之后检索数据的地方。

【问题讨论】:

  • 你如何开始其他活动?
  • 我已经编辑,错过了复制的东西并解释了。
  • 不要使用 Parcelable,使用 Serializeable。
  • 我不在 PC 上尝试在网上搜索有关 Serializable 与 Parcelable 的信息。
  • 请发布您的Comics 课程。除非它非常庞大和复杂,否则没有理由不能使用ParcelableParcelable 是您需要学习使用的东西,如果您要进行任何重要的 Android 编程。

标签: android android-intent arraylist parcelable


【解决方案1】:

在发件人Activity打包

intent.putParcelableArrayListExtra(<KEY>, ArrayList<Comics extends Parcelable> list);
startActivity(intent);

在接收方Activity提取

getIntent().getParcelableArrayListExtra(<KEY>);

【讨论】:

  • 我应该把它们放在哪里?它不允许我使用扩展 Parcelable 也不能启动活动
  • 将您的自定义 ArrayList 类扩展到 Parceable
  • 意图 i = new Intent(); Intent.putParcelableArrayListExtra("comicArrayList", ArrayList comicList);开始活动(一);试过这个,不工作,扩展问题。
  • 您应该在定义 Comics 类时扩展 Parceable。类漫画扩展 Parceable {}
  • 它不允许我使用扩展 Parceable,但它允许我使用实现 Parcelable。
【解决方案2】:

你需要创建一个实现Parcelable的Comics类,然后使用put ParcelableArrayListExtra来传递arraylist。

这是Pass data between activities实现Parcelable的示例链接

但是要小心,如果您的数组列表太大,您可能会得到意图异常,对于这种情况,您可以考虑使用static reference 来存储您的数组列表。

【讨论】:

  • 不要使用 Parcelable,使用 Serializeable。
  • Parcelable 比 Serializeable 快,并且序列化是一项昂贵的操作,您必须将其保持在最低限度。而且 Serializable 是标准的 Java 接口,Parcelable 是 Android 特定的接口
  • 不,不是吗,Parcelable 也很昂贵而且很难理解,Serializeable 足够简单和快速。
  • @ErdincAy 我在使用 Parcelable 时遇到了困难,最后没有成功,介意给我一些关于 Serializeable 的指南吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-30
  • 1970-01-01
  • 1970-01-01
  • 2012-08-29
  • 2023-03-23
  • 2012-11-23
相关资源
最近更新 更多