1

У меня есть приложение для Android с основным видом деятельности, который является табустом. Я добавляю несколько вкладок в tabhost с намерением нескольких действий.Создание активности активной вкладки Android?

Моя проблема заключается в том, что эти действия не создаются (onCreate не вызывается), пока я не нажму на вкладку. Это проблема, потому что мне нужно регистрировать широковещательные передачи: могут быть широковещательные передачи, которые отправляются - прежде чем открыта специальная вкладка.

Я пытался обойти это:

  • Настройка моих приемников как статические и регистрации где-то в другом месте. Это невозможно, потому что мне нужно вызвать методы.
  • Вызов в tabHost.setCurrentTabByTag (the_tag), а затем переход на мою корневую вкладку. Это работает только иногда, и это очень уродливое решение imo.
  • Не использовать действия, а просто использовать представления. Также не очень изящное решение, потому что оно превращает мою деятельность tabHost в один огромный мастер-класс, делающий все виды несвязанных вещей.

Какое будет наилучшее решение этой проблемы? Могу ли я каким-либо образом отправить рассылку «очереди» вместо того, чтобы просто исчезнуть, когда нет приемников? Могу ли я заставить создавать свои действия с вкладками (это не проблема, мои пользователи почти гарантированно используют каждую отдельную вкладку в некоторых точках)? Другие идеи?

редактировать:

Согласно CommonsWare в этом вопросе; Update tabs from a tab's activity in a Android TabHost

Это может быть лучшей идеей реализовать вкладки в виде представлений, а не деятельности ... Это несколько меняет свой вопрос:

Как отделить разные виды логики в одной и той же деятельности? На самом деле не ожидаем более 30-летнего метода.

ответ

0

Я бы использовал TabActivity в качестве моего широковещательного приемника, а не для вкладок. Это даст вам более чистый код и больше контроля над тем, как вы обрабатываете трансляции.

+0

Как бы это решить? Я по-прежнему остаюсь с неинициализированными вкладками, в которых методы нужно вызывать, когда поступают трансляции. –

+1

Вы должны только попробовать и вызвать методы из текущей активности. Я не думаю, что можно запустить все действия из инициализированного и запущенного tabhost одновременно. Было бы плохой практикой, так как это было бы значительным утечкой аккумулятора и процессора телефона. Если трансляция происходит, пока ваша деятельность приостановлена ​​или еще не инициализирована, вы можете сохранить ее в своей TabActivity и передать ее соответствующей деятельности только в том случае, если эта деятельность возобновлена. – m6tt

+0

@disretrospect Не могли бы вы показать пример, как мы можем передавать данные из TabActivity в соответствующий childActivity, когда он будет создан/возобновлен? Спасибо – zeratul021

Смежные вопросы