2017-03-10 58 views
6

我已创建了一个活动(DemoActivity.java)与2个片段(FragmentOne.javaFragmentTwo.java)。事件总线在片段

我喜欢这个EventBus.getDefault().register(this);

活动注册的EventBus,并在活动中创建一个会员键方法:

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

然后我从张贴在FragmentTwo.java按钮的事件点击EventBus.getDefault().post("");

这个场景适合我。但是当我在FragmentOne.java中创建相同的订阅者方法时,它不起作用。为什么?

+1

您需要在EventBus中注册FragmentOne,就像您在活动 – Avi

+0

中注册的一样注册了您的片段作为事件接收器吗? –

+0

@avi我alreay尝试像 - EventBus.getDefault()。register(getActivity()); – sanil

回答

4

从你的问题有可能是导致该问题两件事情:

  1. 你可能还没有注册的EventBusFragmentOne类像你这样为你DemoActivity类。
  2. 如果您在FragmentOne类中注册了EventBus,请检查FragmentOne片段类是否处于活动状态,以便在从FragmentTwo类中发布活动时接收活动。

编辑

由于从评论看到您已经注册EventBusEventBus.getDefault().register(getActivity())由于这只是你的活动将获得注册。要在Fragment.onCreate()方法中使用EventBus.getDefault().register(this)注册Fragment

+0

y只是做到了..但是当我将取消注册那些碎片事件总线? – sanil

+0

'片段'的onDestroy()方法 – Nitin