在Android TabHost中,从选项卡的活动更新选项卡。

9
我有一个TabActivity并且将要拥有3或4个标签。
在TabA中,我想要一个ExpandableListView,它会列出产品。我想让TabC充当一种“购物车”,可能会有一个自己的ListView。
是否有一种方式可以从Activity与TabHost进行交互?我希望能够在TabA内部单击一个按钮并更新并切换到TabC。这是可能的吗?我能否让Tab的活动调用其父母的方法?
4个回答

16
如果您将选项卡实现为视图而不是单独的活动,这将更简单,运行速度更快,占用更少内存,并且在我看来是更好的解决方案。
话虽如此,在选项卡 A Activity 中,请调用getParent()以获取 TabActivity。然后,您可以使用disretrospect指出的方法。

5
+1 对于使用getParent()的建议,我表示赞同。但是我不理解使用视图而不是活动的建议。我更喜欢使用活动来分离生命周期并将每个选项卡的代码分开。 - FrVaBe
@K. Claszen:“分离生命周期”--它们的生命周期并不是分离的。“还要分离属于每个选项卡的代码”--以Java类文件形式进行代码分离已经有15年的历史了。您不需要使用单独的活动来实现这一点。 - CommonsWare
1
感谢您的回复。据我观察,活动生命周期方法(onCreate等)仅在选择相关选项卡时才会被调用。我希望能够在选项卡中扩展提供的活动,例如“ExpandableListActivity”。然而,这两种可能性都是可行的,具体取决于要求,因此我想知道是否有一般建议。 - FrVaBe

3

尝试使用以下代码在选项卡内更改活动:

TabActivity parent = (TabActivity) getParent();
TabHost tabhost = parent.getTabHost();
tabhost.setCurrentTab(0);

1

1
  1. 在您的Activity中,使用getParent()方法获取TabActivity的父级
  2. 在您的TabActivity类中,使用getLocalActivityManager().getActivity(tabId)方法获取Activity对象
  3. 调用Activity对象的方法

那个Activity #3中获取视图怎么样? - Mikey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接