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

看别人代码总能看到一些之前没见过的东西,不久前,对于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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值