美文网首页
第7章 UI fragment与fragment管理器

第7章 UI fragment与fragment管理器

作者: yangpanRoy | 来源:发表于2018-11-06 01:01 被阅读16次

    使用fragment的优势:

    • 可以在手机和平板设备上设计不同的布局,然后用fragment填充布局,展示内容;
    • 可以配合ViewPager完成滑动切换fragment的操作,带来更好的操作体验;
    • 可以在不销毁Activity的同时,通过fragment组装或重新组装显示的控件,更具有灵活性。
    • 可以复用

    fragment的生命周期:

    启动:onAttach(Context)、onCreate(Bundle)、onCreateView() (全在setContentView()方法中调用)
    创建:onActivityCreated(Bundle)
    停止:onStart()、onDestroyView()
    暂停:onResume()、onStop()
    运行:onPause()
    销毁:onDestroy()、onDetach()

    activity托管fragment的两种方式

    • 静态托管:在activity布局文件中定义fragment,等同于将fragment视图绑定在activity视图中,无法替换fragment视图;
    • 动态托管:通过Java代码的方式,用资源id作为fragment视图的代表,替换activity布局中需要替换的部分。

    FragmentManager

    FragmentManager类负责管理fragment并将它们的视图添加到activity的视图层级结构中。
    FragmentManager类具体管理:

    • fragment队列;
    • fragment事务回退栈。

    activity的FragmentManager负责调用队列中fragment的生命周期方法。添加fragment供FragmentManager管理时,onAttach(Context)、onCreate(Bundle)、onCreateView()方法会被调用。
    托管activity的onCreate(Bundle)方法执行后,onActivityCreated(Bundle)方法也会被执行。
    如果activity已经处于运行状态,此时添加fragment,FragmentManager会立即驱赶fragment,调用一系列必要的生命周期方法,快速跟上activity的步伐(与activity的最新状态保持同步)。

    采用fragment的应用架构

    fragment很灵活、具有很强的复用性。但是并不是为了复用组件就要把每一个组件用fragment来封装。应该仅仅封装关键组件,如果单屏就使用大量的fragment,不仅应用代码充斥着fragment事务处理,模块的职责分工也会不清晰。如果有很多零碎小组件想要复用,比较好的架构设计是使用定制视图(custom view)。一般来讲,单屏最多使用2-3个fragment。

    相关文章

      网友评论

          本文标题:第7章 UI fragment与fragment管理器

          本文链接:https://www.haomeiwen.com/subject/wakexqtx.html