是这样的,我在自定义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代码,肯定是没有错误的。目前真的非常迷茫啊...

解决方案 »

  1.   

    你的Activity继承ActivityGroup,并获得ActivityManager。public class TabDesignActivity extends ActivityGroup{   
       
        @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来作为页面切换。不过个人感觉后者的代码比较容易维护,不知道系统资源占用问题上会不会有什么缺陷。
      

  2.   

    tab_host = (TabHost) findViewById(R.id.tab_host);
            tab_host.setup(this.getLocalActivityManager());