我创建了一个带有2个片段(FragmentOne.java和FragmentTwo.java)的Activity(DemoActivity.java)。

我像这样EventBus在 Activity 中注册了EventBus.getDefault().register(this);
并在Activity中创建了一个Suscriber方法:

@Subscriber
public void abc(String str) {
    Log.i(TAG,"MainActivity Called !!");
}

然后我在按钮单击EventBus.getDefault().post("");上发布来自FragmentTwo.java的事件

这种情况对我来说很好。但是,当我在FragmentOne.java中创建相同的订户方法时,它不起作用。为什么?

最佳答案

根据您的问题,可能是由两件事引起的:

  • 您可能没有像对EventBus类所做的那样在FragmentOne类中注册了DemoActivity
  • 如果您已在EventBus类中注册了FragmentOne,则在从FragmentOne类发布事件时,请检查FragmentTwo片段类是否处于 Activity 状态并处于接收事件的状态。

  • 编辑

    从评论中可以看出,您已将EventBus注册为EventBus.getDefault().register(getActivity()),因此只有您的 Activity 会被注册。要注册Fragment,请在EventBus.getDefault().register(this)方法中使用Fragment.onCreate()

    关于android - fragment 中的事件总线,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42712816/

    10-10 22:46