TabHost:如果我需要在单独的Tab / Activity中处理onOptionsItemSelected,该怎么办?

时间:2011-04-11 16:06:46

标签: android

我需要TabHost包含两个tabs,其中每个tab由单独的Activity表示。每个Activity都有自己的数据字段和操作方法。我希望每个tab都有自己的menu,对于此menu,我需要onOptionsItemSelected()方法成为class的一部分,以便能够调用这个class的方法。

实施此方法的最佳方法是什么?

我在代表menu的类中开始使用TabHost定义,但后来面临一个问题,我无法访问Activities的方法。我决定让Activities static的方法可以访问它们,但最后我需要将这些Activities的几乎所有字段定义为静态,这似乎不是一个好的解决方案为了我。

更新


然后我想起来容易得多。在onOptionsItemSelected()中,您可以获得已打开的Activity的当前tab

SecondActivity sa = (SecondActivity)this.getCurrentActivity()
sa.myPublicMethod();

2 个答案:

答案 0 :(得分:0)

这实际上取决于您正在实施的功能类型。您可以让每个活动实现一个包含所需实例方法的接口,然后让tabhost包含对类型接口的当前活动的引用。如果这样做,请确保每次切换到另一个活动时更新引用。

答案 1 :(得分:0)

在每个onOptionItemSelected()中使用Activity,然后调用静态方法,传入您正在呼叫的Activity。然后,您可以查看class的{​​{1}},然后将Activity投射到ActivityTabOneActivity。如果您需要的方法是公开的(或友好的,如果在同一个包中),您将可以访问它而不需要它们是静态的。

编辑:

使用从每个TabTwoActvity调用的静态方法创建一个这样的类。

onOptionItemSelected()