FragmentTransaction与Fragment生命周期的关系
2015-04-13 19:09
585 查看
http://segmentfault.com/a/1190000000650573
在Android中,对
显示:
隐藏:
对于每一组方法,虽然最后产生的效果类似,但方法背后带来的副作用以及对Fragment的生命周期的影响都不尽相同。
只有在
同样,退出
但当使用
调用
同时
其实看完上面的分析,
除了上面这些核心的api外,
http://developer.android.com/reference/android/app/FragmentTransaction.html
在Android中,对
Fragment的操作都是通过
FragmentTransaction来执行。而从
Fragment的结果来看,
FragmentTransaction中对
Fragment的操作大致可以分为两类:
显示:
add() replace() show() attach()
隐藏:
remove() hide() detach()
对于每一组方法,虽然最后产生的效果类似,但方法背后带来的副作用以及对Fragment的生命周期的影响都不尽相同。
add() vs. replace()
只有在Fragment数量大于等于2的时候,调用
add()还是
replace()的区别才能体现出来。当通过
add()连续两次添加
Fragment的时候,每个
Fragment生命周期中的
onAttach()-onResume()都会被各调用一次,而且两个
Fragment的
View会被同时
attach到
containerView。
同样,退出
Activty时,每个
Fragment生命周期中的
onPause()-onDetach()也会被各调用一次。
但当使用
replace()来添加
Fragment的时候,第二次添加会导致第一个
Fragment被销毁,即执行第二个
Fragment的
onAttach()方法之前会先执行第一个
Fragment的
onPause()-onDetach()方法,同时
containerView会detach第一个
Fragment的
View。
show() & hide() vs. attach() & detach()
调用show() & hide()方法时,
Fragment的生命周期方法并不会被执行,仅仅是
Fragment的
View被显示或者隐藏。而且,尽管
Fragment的
View被隐藏,但它在父布局中并未被detach,仍然是作为
containerView的
childView存在着。相比较下,
attach() & detach()做的就更彻底一些。一旦一个
Fragment被
detach(),它的
onPause()-onDestroyView()周期都会被执行。
同时
Fragment的
View也会被
detach。在重新调用
attach()后,
onCreateView()-onResume()周期也会被再次执行。
remove()
其实看完上面的分析,remove()方法基本也就明白了。相对应
add()方法执行
onAttach()-onResume()的生命周期,
remove()就是完成剩下的
onPause()-onDetach()周期。
总结
除了上面这些核心的api外,FragmentTransaction还提供了更多的方法以丰富
Fragment的操作,如为
Fragment的显示和隐藏添加动画。具体使用方法可以参阅api文档。
http://developer.android.com/reference/android/app/FragmentTransaction.html
相关文章推荐
- FragmentTransaction与Fragment生命周期的关系
- FragmentTransaction与Fragment生命周期的关系
- FragmentTransaction与Fragment生命周期的关系
- Viewpager和FragmentTransaction、Fragment生命周期的关系
- FragmentTransaction与Fragment生命周期的关系
- Fragment有直接关系的关键性类FragmentManager,FragmentTransaction,FragmentActivity
- Android Activity与Fragment生命周期 对应关系
- FragmentTransaction与Fragment生命周期的关系
- 小结Fragment与FragmentPagerAdapter的生命周期及其关系
- 关于Activity和Fragment生命周期关系
- Fragment生命周期及其与activity的关系
- Ativity、Fragment、Loader生命周期的关系
- FragmentActivity、FragmentManager、FragmentTransaction几个的关系
- 【Android】Activity与Fragment的生命周期的关系
- Fragment的生命周期和activity的关系图
- Fragment和Activity的生命周期关系
- Fragment和Activity生命周期的关系
- 关于Fragment与Activity生命周期前后关系详解
- Activity和Fragment生命周期之间的关系
- Fragment生命周期及其与activity的关系