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