繁体   English   中英

在Android中的片段之间共享数据

[英]Share data between fragments in android

想要使用“ FragmentA内的RecyclerViewA的AdapterA 要使用另一个“ FragmentB内的RecyclerViewB的AdapterB”中的数据的最佳解决方案什么?

在此处输入图片说明

我被困住了,我试图:
1-使数据在适配器中静态(无垃圾收集器)
2-我需要重复的数据(浪费内存)
(它可以工作,但是可能有更好的解决方案)

先感谢您。 (请询问是否需要详细信息

如果您在MainActivity中创建一个类的新实例,其中包含您希望两个片段都访问的内容。 如果实现Serializable或Parcelable,也可以使用Bundle / Intent将其发送到每个片段。

然后,由于您在两个不同的片段中具有相同的实例,因此,如果您在片段X中编辑数据,则片段Y将能够访问它。

看到这个:

   |---MainActivity---|
   |         |        |
   V         V        V
 Frag A <->Data <->Frag B

MainActivity创建一个新的类(数据),并将其发送到每个片段。 片段可以更新类中的数据。 请注意,如果不支持任何给定的数据类型,则必须使用类。

如果您不想使用Serializable或parcelable,则将MainActivity作为实例发送给每个片段。 然后,从每个片段中获取MainActivity实例并找到所需的数据。

如果您不能将MainActivity传递给任何一个片段,并且不能使用Serializable / Parcelable并且bundle.putExtra或intent.putExtra不支持数据类型,则必须使用静态导入。

这些是您唯一的选择。

或者,您可以创建扩展“应用程序”的类。 然后你写:

MyApplicationClass mac = (MyApplicationClass) getApplicationContext();

然后,您可以访问应用程序扩展类中的数据(此处为mac实例)

最后的话

如果您不想使用静态实例,发送包含内容的可打包/可序列化类或使用扩展应用程序的类,则无法传输数据(假设您使用的HashMap声称无法通过以下方式发送)意向或捆绑)。 如果您具有可以使用Intent或Bundle发送的数据类型或类,则不必使用静态实例或可打包/可序列化的类。 但是,根据您所处的位置,我已经介绍了您拥有的所有选择。 除了使用包含哈希图的类,使用静态实例或使用Application类之外,基本上没有其他方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM