考虑将初始/默认选项卡设置为第二个选项卡的场景:
TabHost _tabHost = getTabHost();
Intent intent0 = new Intent(this, Activity0.class);
Intent intent1 = new Intent(this, Activity1.class);
TabHost.TabSpec spec0 = _tabHost.newTabSpec("0").setIndicator(_vw0).setContent(intent0);
TabHost.TabSpec spec1 = _tabHost.newTabSpec("1").setIndicator(_vw1).setContent(intent1);
_tabHost.addTab(tabSpec0);
_tabHost.addTab(tabSpec1);
_tabHost.setCurrentTab(1);
所有在线资源显示,设置默认选项卡是通过调用setCurrentTab(1)来完成的-然而,上面的代码实际上会首先调用Activity0的onCreate,然后在setCurrentTab(1)行运行后调用Activity1的onCreate。
在源代码中挖掘后,我注意到TabHost的addTab()方法在第一次调用时自己调用setCurrentTab(0):
public void addTab(TabSpec tabSpec) {
...
...
...
if (mCurrentTab == -1) {
setCurrentTab(0); <-- THIS will start first added Activity NO MATTER WHAT
}
}
这显然是一个问题,如果你想用第二个选项卡默认启动你的应用程序。当我只需要一个活动时,我不想加载2个活动。
我想写我自己的addTab方法,但实现依赖于许多私有成员(大多数是受保护的,但少数是私有的)。
我的Activity0在它的onCreate上有一些沉重的逻辑,所以我不想不必要地运行它,只是默认启动activity1。
有什么想法吗?
我确实面临同样的问题,可能最有效的解决方案是创建一个空的不可见/隐藏的第一个选项卡,其活动消耗的CPU比实际的少