Fragment笔记

FragmentTransaction的方法

FragmentTransaction transaction = fm.benginTransatcion();//开启一个事务

transaction.add() 

往Activity中添加一个Fragment

transaction.remove()

从Activity中移除一个Fragment,如果被移除的Fragment没有添加到回退栈(回退栈后面会详细说),这个Fragment实例将会被销毁。

transaction.replace()

使用另一个Fragment替换当前的,实际上就是remove()然后add()的合体~

transaction.hide()

隐藏当前的Fragment,仅仅是设为不可见,并不会销毁

transaction.show()

显示之前隐藏的Fragment

transaction.detach()

会将view从UI中移除,和remove()不同,此时fragment的状态依然由FragmentManager维护。

transaction.attach()

重建view视图,附加到UI上并显示。

transatcion.commit()

提交一个事务


show()/hide()

fragment使用时常遇到的情况是,在一个activity中通过菜单选项的点击来切换不同的fragment,通常是需要保存fragment的状态的,就如编辑个人信息模块时点击其他菜单,返回时你编辑的信息应该要保存的,而不是再次初始化。这时fragment的hide/show方法就派上用场了!
很快你就会发现fragment的生命周期怎么不走了?onPause方法怎么不调用了?onResume怎么不调用了?此时方法 onHiddenChanged派上用场了,当fragment隐藏时,该方法会调用传入参数为true表示该fragment被隐藏了,当fragment调用了show方法后,该方法传入的参数为false,表示该fragment正在显示!
所以总结起来,如果使用hide/show方法来控制fragment的使用时,原本需要在onResume以及onPause方法做的事情就可以迁移到 onHiddenChanged时进行管理。



猜你喜欢

转载自blog.csdn.net/feng88724/article/details/50353835