Fragment

作者: 古早味蛋糕 | 来源:发表于2018-03-26 15:31 被阅读0次
    一、什么是Fragment 或者说为什么会有Fragment ?

    当Android3.0之后,谷歌引入了碎片化的Fragment。为什么要使用Fragment,这是我们首先应该探讨的问题。

    Android3.0主要是引入了平板,利用碎片化,可以很好的管理平板的界面,因为屏幕很大,一个页面肯定要由多个布局来构成,所以利用碎片化可以实现各个布局之间的解耦,方便管理。

    为什么要在手机上也提倡使用Fragment呢,主要是因为一段代码可以在平板跟手机上运行,减少了开发的资源。对界面加载速度有要求时可以代替 Activity使用

    当然随之而来的跟 Activity 类似但又不完全相同的生命周期加大了管理难度。比如:多层Fragment嵌套

    那么Fragment到底是什么呢?
    举个例子:如果把android 一个应用比作一个火箭,activity 就是相当于每个不同零件生产商,Fragment 就相当于每个零件生产商内部子工厂,view 就是相当于零件生产商的包装间,生产商开业了子工厂也可以开业了,生产商倒闭了子工厂也倒闭了。

    为了解决屏幕和复用 才有了Fragment ,之后才有组件化和复用一说。

    二、Fragment 为什么被称为第五大组件?
    1. Fragment为什么被称为第五大组件
      我们可以将Fragment称为第五大组件,因为Fragment使用的频率和自身的生命周期。同时Fragment可以动态灵活加载activity,但Fragment必须依附和加载在activity上。
      在android3.0后为了更好的解决view在大屏幕上适配和使用,而提出的。
    2. Fragment加载到Activit的两种方式
      第一种 静态加载 添加Fragment到Activity的布局文件当中
      第二种 动态加载 项目中用的比较多
      动态在activity 中添加fragment
      第一步 添加一个FragmentTransaction的实例
      第二步 用add()方法加上Fragment的对象rightFragment
      第三步 调用commit()方法使用FragmentTransaction实例改变生效
    3. FragmentPagerAdapter与FragmentStatePagerAdapter区别
      FragmentPagerAdapter在每次切换viewpager的时候他会加收内存的,所以他适合较多的界面。
      而FragmentStatePagerAdapter在切换viewpager时只是分离ui并没有回收内存,所以他适合界较少的界面。
    三、Fragment 的生命周期?

    开始创建Fragment对象
    onAttach
    onCreate
    onCreateView
    onViewCreated
    Activity—>onCreate
    onActivityCreated
    Activity —>onStart
    onStart
    Activity —>onResume
    onResume (Fragment完全初始化完毕)
    onPause
    Activity —>onPause
    onstop
    Activity —>onStop
    onDestoryView
    onDestory
    onDetach
    Activity—> onDestory activity销毁

    四、Fragment 之间的通信
    1. 在fragment中调用activity中的方法getActivity
    2. 在Activity中调用Fragment中的方法 接口回调用
    3. 在Fragment中调用Fragment的方法 findFragmentById
    五、Fragment管理器:FragmentManager
    1. Fragment的replace\add\remove方法
      replace是替换fragment实例
      add是添加fragment实例
      remove是删除fragment实例
    2. 未完...

    相关文章

      网友评论

          本文标题:Fragment

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