13111


AndroidのOttoというイベントバスのライブラリを使用しています。そこで、AnticityでSubscribeするだけでなくそのActivity上のFragmentでもイベントをSubscribeしたいのですがそれは可能ですか。

試してみましたが普通のやり方では、Activityだけに通知がいってしまいできませんでした。何か特別な実装が必要なのでしょうか。詳しい方教えてください。よろしくおねがいします。


CC BY-SA 3.0
2015-07-30T01:18:44.793
12818
2015-08-07T13:22:04.817
7232
question
android eventbus
OttoをActivityとFragment両方でSubscribeすることはできますか


可能です。特に特別な実装は必要ありません。  
以下の点をチェックしてみてください。

  * `Bus`のインスタンスは共通のものを使用しているか
  * `Bus#register()`でFragmentのインスタンスを登録しているか
  * イベントが呼ばれる前に`Bus#unregister()`で解除されていないか
  * `@Subscribe`で通知を受け取る処理をちゃんと実装しているか

以上が問題なければ、Fragmentだろうとなんだろうと通知が届くはずです。

* * *

【追記】一つ重要なポイントをお伝えし忘れましたので、追記いたします

  * `Fragment`が他のクラスを継承していて、その継承元のクラスのみに`@Subscribe`が実装されていないか

`Otto`はアノテーションを使用して処理をしますので、ある子クラスから継承される親クラスのみに`@Subscribe`メソッドを実装した場合に子クラスには通知が行われません。  
子クラスにも`@Subscribe`メソッドの実装をするか、`@Subscribe`用のクラスを別途作るなどの工夫が必要となります。


CC BY-SA 3.0
2015-08-06T10:59:47.490
13111
2015-08-07T13:22:04.817
2015-08-07T13:22:04.817
915
915
12818
answer