У меня есть приложение для Android с основным действием, которое является tabhost. Я добавляю несколько вкладок в tabhost с намерением выполнить несколько действий.
Моя проблема в том, что эти действия не создаются (onCreate не вызывается), пока я не нажму на вкладку. Это проблема, потому что мне нужно зарегистрировать широковещательные приемники: могут быть широковещательные рассылки, которые отправляются до открытия определенной вкладки.
Я попытался обойти это:
- Настройка моих приемников как статических и регистрация откуда-то еще. Это невозможно, потому что мне нужно вызывать методы.
- Вызов tabHost.setCurrentTabByTag(the_tag) и затем обратное переключение на мою корневую вкладку. Это работает только иногда, и это очень уродливое решение.
- Не использовать действия, а просто использовать представления. Также не очень элегантное решение, потому что оно превращает мою активность tabHost в один огромный мастер-класс, выполняющий всевозможные несвязанные вещи.
Что было бы лучшим решением этой проблемы? Могу ли я как-то поставить отправленные трансляции в очередь, а не просто исчезать, когда нет получателей? Могу ли я принудительно создать действия с моей вкладкой (это не проблема, мои пользователи почти гарантированно будут использовать каждую вкладку в какой-то момент)? Другие идеи?
редактировать:
Согласно CommonsWare в этом вопросе; Обновить вкладки из активности вкладки в Android TabHost
Возможно, было бы лучше реализовать вкладки как представления вместо действий... Это несколько меняет мой вопрос:
Как разделить разные виды логики в одном и том же действии? Не очень-то жду 30+ методов сверхактивности.