您的位置:首页 > 移动开发 > Android开发

FragmentTabHost类实现android中Fragment的动态加载

2016-06-14 16:44 537 查看
看别人代码总能看到一些之前没见过的东西,不久前,对于fragment的加载我一般按照最基本的方式,步骤如下:

FragmentManager fragmentManager=
getSupportFragmentManager();//  获取fragmentManager

FrangmentTransaction
fragmentTransactio=fragmentManager.beginTransaction();//
得到fragmentTransaction对象

fragmentTransaction.replace(R.id.frg_container,fragment_homepage);
// 将fragment加载到指定位置

fragmentTransaction.commit();


在进行切换的时候,先隐藏其他不需要的fragment,再判断当fragment是否加载到了当前activity中,如果没有加进来,调用transaction的add方法添加

进来,如果之前已经在加入进了当前activity,显示即可。代码思路如下:

if (otherFragment.isAdded()) {//如果其他某个fragment已经加入进了当前activity,隐藏她,然后加载需要显示
// 的fragment
fragmentTransaction.hide(otherFragment);
}
   if (currentFragment.isAdded()) {// 如果需要加载的进程已经加载了activity中,显示即可 
fragmentTransaction.show(currentFragment).commit();
} else {// 如果需要加载的进程没有加载到activity中,则加入进来即可。  
fragmentTransaction.add(R.id.frg_container, currentFragment).commit();
}


这是以前的思路,这两天发现一个有意思的类FragmentTabHost,可以更简单的实现上述功能,简单的使用过程如下。

1.这个类是V4包中的类,使用前需要引入v4包,如果在android
studio环境中,在build.gradle中添加

compile'com.android.support:support-v4:23.0.0'
,最后的release号,不唯一。

2.activity继承FragmentActivity。

3.在activity中创建FragmentTabHost对象,与布局中的类建立引用关系。

host = (FragmentTabHost) findViewById(R.id......);

4.调用host的setup方法

host.setUp(context , getSupportFragmentManager() , R.id.container);

最后一个参数是用来加载fragment的布局的id。

5.为每一个tab按钮设置图标,文字和内容

TabHost.TabSpec tabSpec = mTabHost.newTabSpec("文字").setIndicator(view);

最后一个参数view,可以自行设计。

6.将tab按钮添加进入到tab选项卡中,并与fragment绑定

host.addTab(tabSpec , fragment , null);

这样在点击第五步的view时候,就可以实现fragment的切换了。而且不需要想之前那样对fragment是否加载进入到当前activity中进行讨论了。

demo下载:http://download.csdn.net/detail/lichangshun3/9549399
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android android studio