【问题标题】:Android: how to pass ArrayList<object> from an activity to anotherAndroid:如何将 ArrayList<object> 从一个活动传递到另一个活动
【发布时间】:2011-06-22 01:12:59
【问题描述】:

arraylist 中的对象是在外部库中定义的。该对象包含一些 int 值和一个 float[]。

如何将所有 ArrayList 从一个活动传递到另一个活动? 谢谢!

顺便说一句,我没有对象类的控制权。

【问题讨论】:

    标签: android android-activity arraylist


    【解决方案1】:

    这取决于数组列表中的对象类型。如果你可以控制它并且可以让它实现 Parcelable,那么你可以使用Intent.putParcelableArrayListExtra

    另一种方法是扩展 Application 并将您的 ArrayList 存储在那里。然后就不需要在 Intent 中传递了,应用程序中的所有活动都可以通过调用getApplication() 来访问它。 Application 对象将在应用程序的整个生命周期内持续存在,其中存储的任何数据也将持续存在。

    编辑:

    为此使用 Application 对象:

    1. 编写一个扩展android.app.Application 的类(我们称之为MyApplication)。声明一个字段(我们称之为array)来保存您的数组列表。
    2. 在清单的&lt;application&gt; 标记中指定名称MyApplication。系统会在为您的应用创建进程时创建MyApplication 的实例。
    3. 任何希望访问该字段的活动都可以使用((MyApplication) getApplication()).array。您在第一个活动中初始化它并在第二个活动中检索它。

    另一种完全不同的方法是在某个类中声明一个静态单例。文档实际上推荐这个而不是子类化应用程序,因为它更加模块化。这是一种 hack,因为它基本上是在声明一个全局变量。但我想这并不比将随机数据放入 Application 对象中更多。

    【讨论】:

    • 我无法控制它,所以我不得不放弃第一种方法。我没有得到第二种方法。如何扩展应用程序并存储 ArrayList。如何使用 getApplication()?可以举个例子吗?
    【解决方案2】:
    Intent intent = new Intent(this, TargetActivity.class);
    intent.putExtra("nameOfArray",YOUR_ARRAY_LIST);
    startActivity(intent);
    

    【讨论】:

    • putExtra 似乎只能在少量值中正常工作。你确定它也适用于 ArrayList 吗?
    • public Intent putExtra (String name, Serializable value) 它说它需要一个 Serializable 并且 ArrayList 是一个可序列化...
    猜你喜欢
    • 1970-01-01
    • 2014-02-10
    • 2021-03-15
    • 1970-01-01
    • 2015-02-08
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 2023-01-11
    相关资源
    最近更新 更多