今天来讲讲Fragment的动态加载
要用到Fragment的动态加载,首先我们要认识一个新东西
这个东西叫做FragmentManager
顾名思义,这个东西叫做Fragment的管理器
那么如何通过它去实现Fragment的动态加载呢?
首先,对于一个页面
如果我们要他根据不同的需求显示不同的页面
最常见的就是一些app的主页面下有好几个按钮
点击不同的按钮然后显示不同的页面
常见的有QQ、微信等。
首先,我们要做的就是在xml中写一个占位的布局
个人推荐用帧布局来占位
给这个帧布局设置好id后,就开始使用Fragmentmanager了
1:实例化得到fragmentmanager对象
private FragmentManager fragmentManager;
//获得FragmentManager对象
fragmentManager = getSupportFragmentManager();
2:这里我们要通过这个对象得到Fragment的事务管理器
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
注意,这个fragmentTransaction就是用来操作显示不同的Fragment页面的了
它有一个add方法,方法里面有两个参数是必须写的
第一个参数是你的占位的帧布局的id
第二个参数写你要显示的fragment类对象
第三个参数可写可不写,它是一个tag值,
写了之后你可以通过fragmentTransaction.findFragmentByTag()得到拥有这个tag的Fragment对象
最后进行提交,这个占位的帧布局就会显示你写的fragment的页面内容了
fragmentTransaction.commit();
其实,除了add方法,fragmentTransaction还有几个方法
Replace:替换,他会把fragment里原来存在的fragment替换掉。比如你add一个页面1,然后再add一个页面2,之后replace页面3,那么页面1和页面2都会被销毁,只留下页面3了
Show和hide:你在add完一个页面后,可以调用hide隐藏,需要再显示时,调用show即可。注意,hide只会销毁fragment的视图对象,replace则是彻底销毁。被replace销毁掉的fragment需要重新add才能调用show或者hide哦。
提醒一下,不管你做以上四个操作中的哪一个,都要去用FragmentManager去获得fragmentTransaction,最后记得提交哦。
最后,关于Fragment的onResume() 以及可见状态的判断可以见下面这篇博客:
关于Fragment的onResume() 以及可见状态的判断_当fragment的onresume被执行后一定是可见的吗_川峰的博客-CSDN博客