[英]Share data between fragments in android
如果您在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.