2017-03-10 66 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