自定义TabHost报错,did you forget to call setup...

csdpz 2012-10-31 12:01:27
是这样的,我在自定义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代码,肯定是没有错误的。目前真的非常迷茫啊...
...全文
338 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Joyce_ZhuRouRou 2013-01-09
  • 打赏
  • 举报
回复
tab_host = (TabHost) findViewById(R.id.tab_host); tab_host.setup(this.getLocalActivityManager());
memory513773348 2013-01-09
  • 打赏
  • 举报
回复
你的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来作为页面切换。不过个人感觉后者的代码比较容易维护,不知道系统资源占用问题上会不会有什么缺陷。

80,356

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧