一个屏幕上有两个片段(活动),一个片段如何使用EventBus更新另一个片段

时间:2019-03-30 14:54:08

标签: android android-fragments kotlin greenrobot-eventbus

好,所以我是android开发的新手。

我正在制作一个录音应用程序。在与录制按钮(用于录制内容)相同的屏幕上,我还有一个Fragment以显示我有多少个录制内容。我可以点击“录制”按钮进行录制,但是在刷新活动状态之前,录制计数不会更新。我希望记录计数实时更新。该片段也将在另一个活动中可见,因此逻辑不能出现在主记录活动中。

我刚刚将EventBus集成到我的项目中。到目前为止,我已经将其设置为事件成功记录的地方,而订户是片段。

片段值正确地获取了事件消息,但是直到“刷新”片段,或者经历了从onDestroyView()onCreateView()的生命周期之后,片段才会更新。

请帮助,我希望能够实时更新片段,而不必使用内置的生命周期功能。

谢谢!

编辑:

我找到了一个解决方案,只需删除片段,然后重新添加。


                supportFragmentManager
                    .beginTransaction()
                    .remove(statsFragmentTwo)
                    .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE)
                    .commit()


                supportFragmentManager
                    .beginTransaction()
                    .add(R.id.main_stats_container_two, statsFragmentTwo)
                    .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
                    .commit()

但是,这看起来并不十分有效!有没有更便宜的方法?

1 个答案:

答案 0 :(得分:0)

  

片段值正确获取事件消息,但是片段   在“刷新”之前,不会更新   onDestroyView()到onCreateView()的生命周期。

我不明白-“ Fragment将不会更新”的想法。如果您可以成功收听事件,则可以在片段中捕获事件的位置立即更新UI元素。我只是伪装一个伪代码。

if(eventListened) 
    updateUIElementsHere();

您不必等待生命周期函数被调用。在您的updateUIElementsHere函数中,您可以考虑使用与onCreateView函数中相似的代码。

希望有帮助!