Java 向传递给另一个活动的可包裹对象添加数据

Java 向传递给另一个活动的可包裹对象添加数据,java,android,Java,Android,现在我有三个不同的类来保存数据。它们被用来追踪成绩。它们是类、类型和作业。它们都是可包裹的 现在,当我将一个Class对象传递给表示包含类型列表的Activity时,如果类型列表已经包含在Class对象中,则可以正常工作。但是,当启动该活动并向其添加数据时,它不会将其添加到类对象,因此当我回溯到Mainactivity,然后单击同一类对象时,我在其他活动中添加的所有数据都将消失 基本上,我要问的是,如果你将一个对象传递给另一个活动,它是否引用了内存中的同一个对象?如果没有,如何使我在其他活动中添

现在我有三个不同的类来保存数据。它们被用来追踪成绩。它们是类、类型和作业。它们都是可包裹的

现在,当我将一个Class对象传递给表示包含类型列表的Activity时,如果类型列表已经包含在Class对象中,则可以正常工作。但是,当启动该活动并向其添加数据时,它不会将其添加到类对象,因此当我回溯到Mainactivity,然后单击同一类对象时,我在其他活动中添加的所有数据都将消失

基本上,我要问的是,如果你将一个对象传递给另一个活动,它是否引用了内存中的同一个对象?如果没有,如何使我在其他活动中添加的信息包含在我在MainActivity中单击的对象中,该对象表示类列表

基本上,我要问的是,如果你将一个对象传递给另一个活动,它是否引用了内存中的同一个对象

不可以。当您通过
Intent
传递
Parcelable
时,会发生运行时序列化/反序列化。它基本上意味着使用复制的数据重新创建对象

这也是为什么在Android的活页夹驱动程序中,
Parcelable
(或其较低级别的表示形式
Parcel
)被用作基本数据结构,以实现进程间通信

若否,如何处理?

由于您的
实现了
包裹
,因此您可以通过主
活动
中的
startAcitivtyForResult
onActivityResult
返回数据的刷新副本。你可以从中了解更多


当然,在退出活动时,您始终可以将数据持久化到内存或文件系统中,并在主
活动
恢复时从持久化重新加载数据

您可以创建静态变量,它们对于特定类的每个对象都保持不变。因此,我打算这样做,但实际上我从recycler视图适配器开始了第二个活动。这是因为第二个活动是通过单击recycler视图中的元素来启动的。因为我将mainactivities上下文传递给适配器类,所以我只能调用startactivity,而不能为结果调用startactivity。有什么想法吗?@KevinCianfarini我现在可以想到两种方法——一种是将你的
上下文
转换成
活动
,然后从那里调用
startAcitivtyForResult
;另一种方法是使用事件总线,当用户单击
RecyclerView
项时触发事件,并在主要活动中侦听该事件。当这样的事件发生时,你可以做任何你想做的事情。@KevinCianfarini事实上,你可以在你的主
活动中定义你的
OnClickListener
,并将它作为依赖项传递给
适配器
,谢谢这些都非常有用@欢迎光临!如果你觉得有帮助,请接受我的回答。