2017-03-10 6 views
6

に私は1つのアクティビティ2つのフラグメント(FragmentOne.javaFragmentTwo.java)と(DemoActivity.java)を作成しました。イベントバスは、フラグメント

私はこのEventBus.getDefault().register(this);

様活性にEventBusを登録し、活動中1つのSuscriber方法作成:その後、私はボタンをFragmentTwo.javaからイベントをポスト

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

EventBus.getDefault().post("");

をクリックしてください

このシナリオは私にとってうまくいきます。しかし、私がFragmentOne.javaで同じサブスクライバメソッドを作成しても、それは動作しません。どうして?

+1

イベント受信者としてフラグメントを登録したアクティビティ – Avi

+0

に登録しているのと同じように、EventBusにFragmentOneを登録する必要がありますか? –

+0

@avi私はalreayのように試みました - EventBus.getDefault()。register(getActivity()); – sanil

答えて

4

あなたの質問から、問題の原因となっている2つのものがあるかもしれません:

  1. あなたDemoActivityクラスに対して行ったようにあなたのFragmentOneクラスでEventBusを登録していない可能性があります。
  2. あなたはFragmentOneクラスでEventBusを登録している場合はFragmentOneフラグメントのクラスは生きているとFragmentTwoクラスからイベントをポストしながら、イベントを受信する状態にあるならば、確認してください。

を編集します。これにより、あなたの活動にEventBus.getDefault().register(getActivity())としてあなたEventBusを登録したコメントからわかるように

が登録されます。 Fragmentを登録するにはFragment.onCreate()メソッドにEventBus.getDefault().register(this)を使用してください。

+0

ちょうどそれを行った..しかし、私はそのイベントバスを破棄する予定ですか? – sanil

+0

'Fragment'の' onDestroy() 'メソッド – Nitin

関連する問題