Android のアクティビティ/フラグメント/サービスと組み合わせたイベント バスのデザイン パターンに関する特定の質問があります。
これまでにわかったこと: 作成したイベント バスを使用する場合、たとえば、アプリケーション全体に対して単一のイベント バスを使用します (シングルトン デザイン パターン)。これで、単一のアクティビティ/フラグメント/サービスがイベント バスにイベントを投稿できるようになり、イベント バスは、この特定のイベントを購読している他のすべてのアクティビティ/フラグメント/サービスにニュースを広めます。このようにして、他のすべてのアクティビティ/フラグメント/サービスがこの特定のイベントに反応できます。すべてのアクティビティ/フラグメント/サービスがイベント バスを使用できるようにするには、バスに登録する必要があり (できれば onCreate*() メソッドで)、停止/キャンセル/破棄しようとしている場合は登録を解除する必要があります。 .
これは私の質問につながります:私は真新しいアクションバーを実装したいとしましょう(Androidのものやシャーロックなどではなく、ここでは最初から意味します)。私の理解では、イベント バスを使用してアクションバーを実装できます。したがって、アクティビティ レイアウトの上にボタンを配置したメイン アクティビティがあり、各ボタンには独自の onClick メソッドが実装されています。ボタンごとに、関連するボタンがクリックされると表示されるフラグメントがあります。これで、各 onClick メソッド (ボタンごとに 1 つ) 内でイベントをイベント バスに投稿でき、バスはそれをフラグメントに広げます。次に、フラグメントは、追加のイベント情報に応じて、表示されるかどうかを確認します。
ここでの問題は、各フラグメントを最初にイベント バスに登録する必要があることです。これを機能させるには、各フラグメントの onCreate() メソッドを少なくとも 1 回呼び出す必要があります。
これについての洞察をありがとう!
シュテファン