Android Studio FragmentTabHost使用

综述

早期的TabHost被废弃,因此使用新的FragmentTabHost代替TabHost

使用TabHost时,在TabActivity中将Activity作为tab加入TabHost即可

使用FragmentTabHost时使用的是FragmentActivity中容纳多个Fragment

FragmentTabHost使用时需要加入v4包,在Eclipse中需要人工导入v4包,AndroidStudio本身自己有v4包,再导入会导致v4包冲突

FragmentTabHost的布局编写:

  1. FrameLayout:真正容纳底部标签的布局。
    1. FragmentTabHost:id使用系统id,tabHost
    2. TabWeight:固定的不知道有什么意思。id使用系统id,tabs
    3. FrameLayout:要求必须按照这种格式写,否则会报错。使用系统id,tabcontent

我们之所以需要在上方加一个FrameLayout的目的是让切换标签放在下方,如果直接使用的下面的结构的话,标签项会出现在界面上方。

FragmentTabhost使用的主界面程序编写,继承FragmentActivity

1、找到FragmentTabHost:通过findViewById(android.R.id.tabhost)
2、初始化FragmentTabHost:通过setup函数,参数传入context,getSupportFragmentManager(),以及自己真正的标签容器。
3、添加Tab三步:
①创建Tab:tabHost.newTabSpec(String tag);该tag可以用来找到Fragment
②设置标签:tabSpec.setIndicator(View v);这里一般使用组合控件,一般情况下标签包括文字以及图片两个部分。
③添加Tab:tabHost.addTab(tabSpec, MyFragment.class, Bundle bundle);第二个参数是对应需要添加的Fragment,bundle是chuanruFragment的参数,不需要时填入null;该参数可以在Fragment中的onCreateView中通过Bundle bundle = this.getArguments()获取。

Fragment的编写

很多情况下我们会是从Activity改为Fragment,在Fragment中主要函数有两个,onCreateView中可以通过填充布局实现界面布局,在onViewCreated中可以通过findViewById找到对应的控件。

getActivity函数可以获取该Fragment对应的FragmentActivity,getActivity.getApplicationContext可以获取上下文。

在startActivityForResult时,返回结果操作只能通过FragmentActivity来处理,有FragmentActivity辨别后返回给对应的Fragment处理。

你可能感兴趣的:(android)