是这样的,我在自定义tabhost,在Java代码中获取到tabhost之后,马上调用了setup()方法。
可是这么写了之后运行会说,
java.lang.IllegalStateException: Did you forget to call 'public void setup(LocalActivityManager activityGroup)'?
照理说,既然setup()方法调用了就不该这样。我知道上面这句报错的意思是要让Actiity继承ActivityGroup,再去调用setup(activityGroup)。
不过目前ActivityGroup已经被废弃了,所以我就没有去继承。更奇怪的是,我eclipse上的另外一个小例子,是昨天写的。也是自定义的tabhost。调用的是setup()方法,一点事都没有。
不过昨天刚开始写的时候也是有问题,同样会爆上面的错误,但是也不知道怎么的就好了。现在运行的非常正常。
我再三比对了Java代码和xml代码,肯定是没有错误的。目前真的非常迷茫啊...
可是这么写了之后运行会说,
java.lang.IllegalStateException: Did you forget to call 'public void setup(LocalActivityManager activityGroup)'?
照理说,既然setup()方法调用了就不该这样。我知道上面这句报错的意思是要让Actiity继承ActivityGroup,再去调用setup(activityGroup)。
不过目前ActivityGroup已经被废弃了,所以我就没有去继承。更奇怪的是,我eclipse上的另外一个小例子,是昨天写的。也是自定义的tabhost。调用的是setup()方法,一点事都没有。
不过昨天刚开始写的时候也是有问题,同样会爆上面的错误,但是也不知道怎么的就好了。现在运行的非常正常。
我再三比对了Java代码和xml代码,肯定是没有错误的。目前真的非常迷茫啊...
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.tab_main);
mTabHost = (TabHost) findViewById(R.id.tabhost);
mTabHost.setup();
mTabHost.setup(this.getLocalActivityManager());
} 参考http://www.ourunix.org/android/post/101.html不过android开发的官网上说:
This class was deprecated in API level 13.
Use the new Fragment and FragmentManager APIs instead;
我在用自定义的TabHost也遇到这种情况,发现其实TabHost也可以像Fragment一样在一个Activity定义多个切换界面,而不是定义多个activity来作为页面切换。不过个人感觉后者的代码比较容易维护,不知道系统资源占用问题上会不会有什么缺陷。
tab_host.setup(this.getLocalActivityManager());