我创建了一个带有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/