2010-05-31 48 views
9

我有一个TabActivity,并将有3或4个选项卡。更新标签在Android TabHost中的活动选项卡

在TabA中,我想要一个ExpandableListView,它将列出产品。我希望TabC充当一种“购物车”,可能带有一个ListView本身。

有没有一种方法与活动中的TabHost进行交互?我希望能够点击TabA中的一个按钮并更新并切换到TabC。这可能吗?我可以让Tab的活动调用它的父母方法吗?

回答

16

如果你实现你的标签作为视图,而不是单独的活动,这会更简单,运行更快,占用更少的内存,并成为更好的解决方案恕我直言。

话虽这么说,在选项卡中Activity,叫getParent()得到的TabActivity。然后,你可以使用disretrospect指出的方法。

+5

1为使用getParent()末端 - 虽然我不理解使用视图而不是活动的建议。我更喜欢分离生命周期的活动,也喜欢分离属于每个标签的代码。 – FrVaBe 2011-02-23 13:57:13

+0

@ K。 Claszen:“分开生命周期” - 他们的生命周期不是分开的。 “也分离属于每个标签的代码” - 以Java类文件形式的代码分离已经存在了15年。您不需要为此使用单独的活动。 – CommonsWare 2011-02-23 14:05:08

+1

感谢您的回复。正如我所观察到的,仅当选择了关联的选项卡时才会调用活动生命周期方法(onCreate等)。我希望能够在选项卡中扩展诸如“ExpandableListActivity”的提供的活动。但是,这两种可能性都是根据需求提供的,并且根据需要而定,所以我只是想知道是否可以提供一般性建议。 – FrVaBe 2011-02-23 14:26:49

1
  1. 在你的活动中,使用的getParent()来获取TabActivity父
  2. 在你TabActivity类,使用getLocalActivityManager()。getActivity(tabId)来获得活动对象
  3. 调用活动对象的方法
+0

如何获得该活动#3中的视图 – Mikey 2012-07-02 09:52:30

3

尝试使用此代码到一个标签中改变活性:

TabActivity parent = (TabActivity) getParent(); 
TabHost tabhost = parent.getTabHost(); 
tabhost.setCurrentTab(0); 
相关问题