FragmentManager的使用
申明fragmentManager
FragmentManager mFgManager=getFragmentManager();
或者
FragmentManager mFgManager=getSupportFragmentManager()
- 在
fragment
中可以先getActivity()
- 套娃:在
activity
中获取其fragmen
t的FragmentManager
:getChildFragmentManager()
使用framentManager实例
-
beginTransaction()
开启事务
-
commit()
提交事务
-
add()
add方法会直接将一个fragment
添加到指定的id布局中,不管这个布局容器中原来有没有,无条件覆盖。所以会叠加,而之前的fragment
只是被遮挡,view
并不会被摧毁
-
getFragmentbyTag()
与getFragmentbyId()
这两个方法可以获得有相应的tag或id属性的fragment(这两个属性也可以通过xml里布局设置),那么就出现了有多个fragment拥有相同的tag和id,那调用该方法获得的是哪个呢?实测获得的是最顶层的那个fragment,也就是最近添加的
-
replace()
该方法不同于add()可有其注释的出,relplace()会先相应调用该布局id容器中中所有的add的fragment的remove()
方法,然后在调用add()
方法
-
remove()
移除这个fragment,最后会调用onDetach()
-
show()
和hide()
,这里要注意调用这两个方法并不会走fragment的生命周期,即并不会调用onPause()
,onStop
方法,而是只调用了onHiddenChanged()
方法,所有改变应在这个方法里,重写之