将一个数据传递给多个片段的最佳方法

时间:2018-02-25 16:12:49

标签: java android android-fragments

我有一个场景,我有一个活动和4个片段,从一个片段我使用接口传递数据到主要活动,我正在接收值或说对象,现在我需要做什么,我必须将同一个对象传递给所有其他片段。但我不想使用捆绑或静态方法/字段,我只是想知道这个问题的最佳想法或方法,我能做什么?

我正在考虑使用抽象类的一个解决方案,假设我的抽象类名是ParentFragmentAbstarct应该实现Fragment类并在其中定义一个抽象方法,比如setData(),然后每个Fragment应该扩展这个Fragment类然后抽象方法被覆盖在每个片段中,现在我迷失了,如果我只从片段之一获取值,如何设置其中的值(让我们说从网络响应我现在收到片段2中的数据n现在如何设置此其他三个片段中的值相同)

2 个答案:

答案 0 :(得分:0)

  

将抽象类与片段对象数组一起使用:

与ViewPager一样,您有一个适配器来保存这些片段的实例。当您的一个片段使用接口向MainActivity通知新数据时,您可以简单地迭代ViewPagerAdapter并调用您的抽象方法。所有碎片都会收到通知。

  

使用广播接收器

您可以声明自己的广播接收器并制作片段以收听这些广播。当数据准备就绪时,您的片段可以发送广播,然后所有正在收听此特定广播的片段都可以更新其状态。请检查此one

  

使用Observable RxJava

     

在ReactiveX中,观察者订阅了一个Observable。然后   观察者对Observable的任何项目或项目序列作出反应   发射。此模式有助于并发操作,因为它确实如此   在等待Observable发出对象时不需要阻塞,   但相反,它以观察者的形式创造了一个哨兵   随时准备对Observable进行适当的反应   这样做。

查看observable

  
    

使用EventBus

  
     

EventBus是Android和Java的发布/订阅事件总线。

这是一个很棒的library,占地面积非常小,可以轻松完成工作

答案 1 :(得分:0)

您可以创建一个单例数据管理器类,并让所有片段订阅它并监听数据更改。接收状态变化时,每个片段都可以拥有自己的实现。

在此管理器类中进行任何数据库调用,并在响应回调

上将数据分发给侦听器