gpt4 book ai didi

java - android中fragment之间共享数据

转载 作者:行者123 更新时间:2023-12-02 13:25:08 25 4
gpt4 key购买 nike

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

enter image description here

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

提前谢谢您。 (如果需要,请询问详细信息)

最佳答案

如果您在 MainActivity 中创建一个类的新实例,其中包含您希望两个 fragment 访问的任何内容。如果你实现了Serialized或者Parcelable,你还可以使用Bundle/Intent将其发送到每个fragment。

然后,由于两个不同 fragment 中有相同的实例,如果您编辑 fragment X 中的数据, fragment Y 将能够访问它。

看这个:

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

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

如果您不想使用 Serialized 或 Parcelable,请尽可能将 MainActivity 作为实例发送到每个 fragment 。然后,您可以从每个 fragment 中获取 MainActivity 实例并找到所需的数据。

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

这些是你唯一的选择。

或者,您可以创建一个扩展“Application”的类。然后你写:

MyApplicationClass mac = (MyApplicationClass) getApplicationContext();

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

最后一句话

如果您不想使用静态实例,发送包含内容的可包裹/可序列化类,或使用扩展应用程序的类,则无法传输数据(考虑到您正在使用您声称不能的 HashMap)通过 Intent 或 Bundle 发送)。如果您有可以使用 Intent 或 Bundle 发送的数据类型或类,则不必使用静态实例或可包裹/可序列化类。但鉴于你所处的位置,我已经向你展示了所有的选择。除了使用包含 HashMap 的类、使用静态实例或利用 Application 类之外,基本上没有其他方法。

关于java - android中fragment之间共享数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43415520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com