[英]How to pass ArrayList<my_custom_class> to an other activity?
这个问题有 2 个部分
我正在尝试将ArrayList
从一个Activity
传递到另一个活动。 这个Arraylist
包含一些从我创建的 class 实例化的对象(包含一些字符串和Drawable
)。
我在网上发现我需要让我的 class Parcelable
这是一个问题,尤其是Drawable
。(这是第一部分)
一旦我的 class 实现Parcelable
,我将如何发送/获取我的Arraylist
。
您可以将 ArrayList 设为公共 static,并且可以通过将其称为 Activity_name.array_list_name 来访问您想要的任何位置。
其中 Activity_name 是 class 名称,您将在其中定义 ArrayList。
如果不使其扩展Parcelable
,则无法通过 Object .. 所以我建议创建名为store()
的 class 或其他东西,并将其singleTon
。 它有一个ArrayList()
类型的私有字段。 并为同一个变量创建getter和setter,无论你在哪里创建object,只要说store().getInstance().setObject(yourObject);
并且在获得
store().getInstance().getObject();
我强烈建议你重新评估你的架构。 出于多种原因,您不应该跨活动边界传递可绘制对象,包括上下文泄漏、bitmap 泄漏以及可能打破 IPC 调用的大小限制。
如果您真的需要这种行为,正确的方法是将您的可绘制数据保存在数据库/SharedPreference 中,并将您的位图保存到文件中,然后当第二个活动开始时,您可以通过拉入数据和图像来重新创建这些可绘制对象。
您能否描述一下为什么两个不同的活动需要访问相同的可绘制对象列表? 我怀疑一些重组可以完全避免这个问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.