Обновите вкладки из активности вкладки в Android TabHost

У меня есть TabActivity, и у меня будет 3 или 4 вкладки.

В TabA я хотел бы иметь ExpandableListView, в котором будут перечислены продукты. Я хотел бы, чтобы TabC действовал как своего рода «корзина для покупок», возможно, с самим ListView.

Есть ли способ взаимодействовать с TabHost из Activity? Я хотел бы иметь возможность щелкнуть кнопку внутри TabA, обновить ее и переключиться на TabC. Это возможно? Могу ли я заставить действия Tab вызывать его родительские методы?


person Josh Lillie    schedule 31.05.2010    source источник


Ответы (4)


Если вы реализуете свои вкладки как представления, а не отдельные действия, это будет намного проще, работать быстрее, занимать меньше памяти и будет лучшим решением IMHO.

При этом на вкладке A Activity вызовите getParent(), чтобы получить TabActivity. Затем вы можете использовать методы, указанные неретроспектом.

person CommonsWare    schedule 31.05.2010
comment
+1 за совет getParent() - хотя я не понимаю рекомендацию использовать представления вместо действий. Я предпочитаю, чтобы действия разделяли жизненные циклы, а также код, принадлежащий каждой вкладке. - person FrVaBe; 23.02.2011
comment
@К. Claszen: чтобы разделить жизненные циклы — их жизненные циклы не разделены. также для разделения кода, принадлежащего каждой вкладке - разделение кода в виде файлов классов Java существует уже 15 лет. Для этого не нужно использовать отдельные активности. - person CommonsWare; 23.02.2011
comment
Спасибо за ответ. Как я заметил, методы жизненного цикла действий (onCreate и т. д.) вызываются только в том случае, если выбрана соответствующая вкладка. И мне нравится иметь возможность расширять предоставленные действия, такие как ExpandableListActivity, на вкладке. Однако обе возможности предоставляются и имеют смысл в зависимости от требований, поэтому мне просто интересно, может ли быть общая рекомендация. - person FrVaBe; 23.02.2011

Попробуйте использовать этот код для изменения активности на вкладке:

TabActivity parent = (TabActivity) getParent();
TabHost tabhost = parent.getTabHost();
tabhost.setCurrentTab(0);
person Randy V    schedule 17.07.2012

Вы можете вызвать getTabHost из TabActivity, см. общедоступный TabHost getTabHost().

См. Tabhost для setCurrentTab, public void setCurrentTab( индекс int).

person m6tt    schedule 31.05.2010

  1. В своей деятельности используйте getParent(), чтобы получить родителя TabActivity
  2. В вашем классе TabActivity используйте getLocalActivityManager().getActivity(tabId), чтобы получить объект Activity
  3. вызвать метод объекта Activity
person Jack Cheung    schedule 28.05.2012
comment
как насчет того, чтобы получить представление в этом действии № 3 - person Mikey; 02.07.2012