質問: AndroidのOttoというイベントバスのライブラリを使用しています。そこで、AnticityでSubscribeするだけでなくそのActivity上のFragmentでもイベントをSubscribeしたいのですがそれは可能ですか。 試してみましたが普通のやり方では、Activityだけに通知がいってしまいできませんでした。何か特別な実装が必要なのでしょうか。詳しい方教えてください。よろしくおねがいします。
回答: 可能です。特に特別な実装は必要ありません。 以下の点をチェックしてみてください。 * `Bus`のインスタンスは共通のものを使用しているか * `Bus#register()`でFragmentのインスタンスを登録しているか * イベントが呼ばれる前に`Bus#unregister()`で解除されていないか * `@Subscribe`で通知を受け取る処理をちゃんと実装しているか 以上が問題なければ、Fragmentだろうとなんだろうと通知が届くはずです。 【追記】一つ重要なポイントをお伝えし忘れましたので、追記いたします * `Fragment`が他のクラスを継承していて、その継承元のクラスのみに`@Subscribe`が実装されていないか `Otto`はアノテーションを使用して処理をしますので、ある子クラスから継承される親クラスのみに`@Subscribe`メソッドを実装した場合に子クラスには通知が行われません。 子クラスにも`@Subscribe`メソッドの実装をするか、`@Subscribe`用のクラスを別途作るなどの工夫が必要となります。