我需要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();
答案 0 :(得分:0)
这实际上取决于您正在实施的功能类型。您可以让每个活动实现一个包含所需实例方法的接口,然后让tabhost包含对类型接口的当前活动的引用。如果这样做,请确保每次切换到另一个活动时更新引用。
答案 1 :(得分:0)
在每个onOptionItemSelected()
中使用Activity
,然后调用静态方法,传入您正在呼叫的Activity
。然后,您可以查看class
的{{1}},然后将Activity
投射到Activity
或TabOneActivity
。如果您需要的方法是公开的(或友好的,如果在同一个包中),您将可以访问它而不需要它们是静态的。
编辑:
使用从每个TabTwoActvity
调用的静态方法创建一个这样的类。
onOptionItemSelected()