这个问题有 2 个部分
我正在尝试将一个ArrayList
从一个传递Activity
到另一个。这Arraylist
包含一些从我创建的类实例化的对象(包含一些字符串和一个Drawable
)。
我在网上发现我需要上课Parcelable
,这尤其是一个问题Drawable
。(这是第一部分)
一旦我的课程实现Parcelable
了,我将如何发送/获取我的Arraylist
.
这个问题有 2 个部分
我正在尝试将一个ArrayList
从一个传递Activity
到另一个。这Arraylist
包含一些从我创建的类实例化的对象(包含一些字符串和一个Drawable
)。
我在网上发现我需要上课Parcelable
,这尤其是一个问题Drawable
。(这是第一部分)
一旦我的课程实现Parcelable
了,我将如何发送/获取我的Arraylist
.
您可以将 ArrayList 设为公共静态,并且可以通过将其称为 Activity_name.array_list_name 来访问您想要的任何位置。
其中 Activity_name 是您将在其中定义 ArrayList 的类名。
传递 Object 是不可能的而不使其扩展Parcelable
.. 所以我建议创建名为的类store()
或其他东西并使其成为singleTon
. 它有一个类型的私有字段ArrayList()
。并为同一个变量创建getter和setter,无论你在哪里创建对象,只要说store().getInstance().setObject(yourObject);
并且在获得
store().getInstance().getObject();
我强烈建议你重新评估你的架构。出于多种原因,您不应该跨活动边界传递可绘制对象,包括上下文泄漏、位图泄漏以及可能打破 IPC 调用的大小限制。
如果您真的需要这种行为,正确的方法是将您的可绘制数据保存在数据库/SharedPreference 中,并将您的位图保存到文件中,然后当第二个活动开始时,您可以通过拉入数据和图像来重新创建这些可绘制对象。
您能否描述一下为什么两个不同的活动需要访问相同的可绘制对象列表?我怀疑一些重组可以完全避免这个问题。