我正在使用带有三个片段菜单的内置Navigation drawer Activity,并且希望通过这些片段进行通信,这意味着将数据从一个片段传递到另一个片段。我发现有三种可能的方式与碎片交流。而且,我已经清楚地明白,碎片从来没有直接沟通。
- 使用 * 接口 *
- 全局类(扩展 Application 类)
- 最后使用bundle
与片段通信的最佳方式是什么?目前,我使用 * 第二个方法 *,我把所有这些对象(getter&setter类)到扩展Application类的`Globalized对象中。这是正确的做法还是错误的做法?
6条答案
按热度按时间lhcgjxsq1#
您可以在Object类中实现Serializable,然后使用bundle简单地传递它。我假设你从你的first_fragment启动second_fragment。
要序列化对象,只需在Object类中实现Serializable。
如果Object类是YourObj.class
vlju58qv2#
通过使模型类Serializable或Parcelable,可以在片段和Activity之间传递对象。
Parcelable是一个Android类,可以支持更复杂的类序列化。在这里检查Parceble类的实现:http://shri.blog.kraya.co.uk/2010/04/26/android-parcel-data-to-pass-between-activities-using-parcelable-classes/
Serializable是一个Java类,适用于小对象。对于可序列化访问,请单击此处:https://developer.android.com/reference/java/io/Serializable.html
假设你的模型类是NewObject,那么在你的fragment类中使用以下命令:
要从另一个fragment中的bundle中获取它,请在onCreate函数中使用:
zpf6vheq3#
数据保持器类别:
片段A:
片段B:
2g32fytz4#
在承载这些片段的Activity中,定义一个变量,
现在,在你的片段中,当你从你的API得到响应时,在Activity中初始化变量
User
如下:}
假设你的
User
类实现了Parcelable接口,如果没有,那么就把这个类变成Parcelable。这与Java中的Serializable
工作原理相同,但Parcelable
针对Android
进行了优化。最后,当你加载第二个片段时,简单地将User对象传递给第二个片段,如下所示:
jum4pzuy5#
当你需要在片段之间传递有限的数据时,你可以使用Bundle示例。如果你有复杂的对象要传递,你更喜欢接口而不是其他方式。你也可以检查参考的链接
a1o7rhls6#
你可以试试这样。在你的第一个片段里
在你的第二个碎片里
对象应该是这样的。