Android——tabHost的使用注意点

自己在使用TabHost的过程中由于时间久和自己就理解不深的缘故,在获取到tabHost后进行addTab操作时经常遇到空指针异常的缘故,在这里做一个总结

1.当我们直接让Activity继承自TabActivty时:

  • 需要在layout布局文件中指定一个TabHost控件的ID
  • 在activity中使用getTabHost()得到tabhost控件对象

2.当我们的activity不直接继承自TabActivity时,也不用intent填充fragment时

  • 需要通过findViewById获得tabHost控件,这时layout布局中并不指定id
  • 需要在使用tabHost之前调用tabHost.setup()进行初始化。重要的事情说三遍,如果不调用该函数则会出现空指针异常
  • 调用tabHost.setup()进行初始化
  • 调用tabHost.setup()进行初始化
  • 调用tabHost.setup()进行初始化

在这种情况下并不能直接在addTab的时候将其他的activity嵌入到当前的tab页面中,系统还是提示空指针异常比如:

 tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("第一").setContent(new Intent(this,Act1.class)));
        tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("第二").setContent(new Intent(this,Act2.class)));
        tabHost.addTab(tabHost.newTabSpec("tab3").setIndicator("第三").setContent(new Intent(this,Act3.class)));

但是还会提出一个建议:

Did you forget to call 'public void setup(LocalActivityManager activityGroup)'?

这告诉我们要调用tabHost的有参方法。但是该方法的参数只有通过
getLocalActivityManager()函数得到,该函数却是ActivityGroup才有的,所以请看第三条

3.当我们的activity不直接继承自TabActivity时,需要用intent填充fragment时

  • activity需要继承自ActivityGroup
  • 通过findViewById获得tabHost
  • 在使用tabHost之前要调用tabHost.setup(getLocalActivityManager());

**所以综合来看,如果要使用tabHost,那么直接继承自TabActivity是最方便的方法,不过需要在layout布局文件中指定tabHost控件的ID
为 a ndroid:id/tabhost (注意大小写),并且在activity中直接通过getTabHost()方法获取到tabHost对象**

你可能感兴趣的:(linux,android)