读 Fragments 总结
生命周期
lifecircleCreating a Fragment
- adding a fragment without a UI : 通过 add(Fragment,String)来添加无UI的fragment。 一般来说Fragment的使用是为了使视图模块化为了方便pad/phone的不同布局或者重用view,看到文档中的这段我就疑惑了,什么情况下会创建没有UI的fragment呢?google了一番,找到以下几种使用场景,答案来自what-is-the-use-case-for-a-fragment-with-no-ui
- fragment能在屏幕旋转等configuration changes的场景不被销毁,activity在此情况下会销毁再重建。可以在无UI的fragment中使用thread / AsyncTask来使之保持。通常会使用Service来做这件事,但fragment层级可以作为"controller"来与其他fragment或activity交互,例如发送广播传送数据,来修改布局。这样提供良好的解耦性,使得activity不过分冗余。
- 当无法在父activity中添加通用的代码段来实现多处复用,而又需要生命周期的回调方法时,no-UI-Fragment 解决了这个问题。
- 将activity中过多的代码块分离到 no-UI-Fragments 中。
Managing Fragments
通过getFragmentManager()来得到 FragmentManager 管理fragments,寻找fragment:findFragmentById() / findFragmentByTag() ;弹出:popBackStack();监听stack的变化:addOnBackStackChangedListener()
网友评论