タブホストをメインアクティビティとするAndroidアプリケーションがあります。いくつかのアクティビティを目的として、タブホストに複数のタブを追加しています。
私の問題は、タブをクリックするまでこれらのアクティビティが作成されない(onCreateが呼び出されない)ことです。ブロードキャストレシーバーを登録する必要があるため、これは問題です。特定のタブが開かれる前に送信されるブロードキャストが存在する可能性があります。
私はこれを回避しようとしました:
- レシーバーを静的に設定し、他の場所から登録します。メソッドを呼び出す必要があるため、これは不可能です。
- tabHost.setCurrentTabByTag(the_tag)を呼び出してから、ルートタブに戻ります。これはたまにしか機能せず、これは非常に醜い解決策です。
- アクティビティを使用せず、代わりにビューを使用します。また、tabHostアクティビティを1つの巨大なマスタークラスに変えて、あらゆる種類の無関係なことを実行するため、あまり洗練されたソリューションではありません。
この問題の最善の解決策は何でしょうか?受信者がいないときに送信されたブロードキャストを単に消えるのではなく、どういうわけか「キュー」にすることはできますか?タブアクティビティを強制的に作成できますか(これは問題ではありません。ユーザーは、ある時点ですべてのタブを使用することがほぼ保証されています)。他のアイデア?
編集:
この質問のCommonsWareによると; AndroidTabHostのタブのアクティビティからタブを更新します
タブをアクティビティではなくビューとして実装する方が良いかもしれません...それは私の質問をいくらか変えます:
同じアクティビティで異なる種類のロジックを分離するにはどうすればよいですか?30以上のメソッドの超活動を本当に楽しみにしていません。