Fragment经常用到,可能任何App都离不开的组件,常用组件之一。
其实我们在用Fragment 的时候会发现很多坑,例如,切换时重叠,数据传递等问题。延伸的解决方案一大堆,So有了国人精品系列的Fragmenttion,比较不错的Fragment解决方案。也都在使用Fragmention,所以产生了依赖,对原生的Fragment忘乎所以了,不知道你有没有这种情况,反正我是有了。
那就从Fragment 生命周期说起吧:
onAttch() 依赖宿主Activity ,获取Content
onCreate() Fragment对象的初始创建时
onCreateView () 布局引入,返回当前View
onActivityCreate() 方法会告诉Fragment对象,它所依附的Activity对象已经完成了Activity.onCreate()方法的执行,当onCreate(),onCreateView(),onViewCreated()方法执行完后调用,也就是Activity被渲染绘制出来后
onStart()方法会让Fragment对象显示给用户(在包含该Fragment对象的Activity被启动后)
onResume() 这个就比较重要了 如:屏幕解锁,回到应用 回到当前页面 onStart() ->onResume()
onPause() 暂停
onStop() 停止
onDestroyView() 销毁当前视图 ,一般都可以在这里写结束处理
onDestroy() 销毁
onDetach() 解除依赖宿主Activity
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
lateinit var mFragmentTransaction : FragmentTransaction
hide(Fragment fragment) : 隐藏一个存在的Fragment
show(Fragment fragment) : 显示一个以前被隐藏过的Fragment
注意:当使用add(),show(),hide()跳转新的Fragment时,旧的Fragment回调onHiddenChanged(),不会回调onStop()等生命周期方法,而新的Fragment在创建时是不会回调onHiddenChanged(),这点要切记。
commit()、 commitAllowingStateLoss()、 commitNow()、commitNowAllowingStateLoss()
API文档说明:
commit():安排一个事务的提交。
commitAllowingStateLoss():和commit一样,但是允许Activity的状态保存之后提交。
commitNow():同步的提交这个事务。(API_24添加的)
commitNowAllowingStateLoss():和commitNow()一样,但是允许Activity的状态保存之后提交。(API_24添加的)