如果用系统默认的tabhost时,即(TabHost)findViewById(android.R.id.tabhost); 红色部分为android系统自带的样式,直接用getTabhost()初始化,整个类继承tabActivity。
如果使用自己定义的id时,必须使用findViewById(R.id.tabhostname);tabhostname.setup()或者setup(LocalActivityManager activityGroup)
如果后面使用 setContent(android.content.Intent)即setContent参数是一个实例化的Intent时,必须使用setup(LocalActivityManager activityGroup),而对应的整个类必须继承ActivityGroup,使用setup()时,整个类继承的是Activity。
在使用TabHost时有时出现Did you forget to call 'public void setup(LocalActivityManager activityGroup),主要是没有继承ActivityGroup和获得ActivityManager。
解决方法
Activity继承ActivityGroup,并获得ActivityManager。代码如下:
public class TabActivity extends ActivityGroup{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tab_main);
mTabHost = (TabHost) findViewById(R.id.tabhost);
mTabHost.setup();
mTabHost.setup(this.getLocalActivityManager());
}
对于TabHost、布局文件中必须包含TabHost、TabWidget 、FrameLayout .缺一不可
如果加载该TabHost画面的类继承TabActivity,并且想通过getTabHost()方法来获取TabHost,getTabWidget()方法获取TabWidget,
那么TabHost、TabWidget 、FrameLayout 三者的ID必须是android.R.id.tabhost、android.R.id.tabs、android.R.id.tabcontent