Fragment

作者: Dream_Book | 来源:发表于2020-04-03 11:27 被阅读0次

    文章仅做个人笔记使用:

    Fragment可以视为Activity的一个具有生命周期的模块化组件,必须依赖与Activity,并且生命周期受宿主Activity的影响。

    生命周期:

    • onAttach( )

      当fragment与Activity关联后调用此方法,Activity在此传递。
    • onCreate( )

      fragment首次创建会调用此方法,恢复基本组件数据。
    • onCreateView( )

      fragment界面首次绘制时调用,设置fragment的根布局。
    • onActivityCreated( )

      关联的Activity已经初始化完成后调用。
    • onStart( )

      fragment已经准备完毕,但是还没有展示在前台。
    • onResume( )

      fragment已经显示在前台可以和用户进行交互。
    • onPause( )

      fragment即将离开,应该在此处保留一些基本信息。
    • onStop( )

      fragment已经停止运行,继续做一些后续回收的轻量操作。
    • onDestroyView( )

      删除与fragment的关联布局时调用。
      依赖的Activity退出时候调用。
    • onDestroy( )

      fragment即将被销毁,做最后的资源回收。
    • onDetach( )

      当fragment和依赖的Activity失去关联时调用。
    • onHiddenChanged( )

      当fragment被隐藏或者显示的时候会调用,类似于onResume( )和onPause( )
    • setUserVisibleHint

      和ViewPager嵌套使用时判断是否隐藏显示。

    与Activity生命周期的关系:

    场景:一个Activity(A)中,有两个Fragment(F和F2)可以来回切换。

    • 进入Activity
      A:onCreate( )
      F:onAttach( )
      A:onAttachFragment( )
      F:onCreate( )
      F:onCreateView( )
      F:onActivityCreated( )
      F:onStart( )
      A:onStart( )
      A:onResume( )
      F:onResume( )
    • 切换至第二个Fragment
      F2:onAttach( )
      A:onAttachFragment( )
      F2:onCreate( )
      F:onHiddenChanged( )
      F:onPause( )
      F:onStop( )
      F:onDestroyView( )
      F:onDestroy( )
      F:onDetach( )
      F2:onCreateView( )
      F2:onActivityCreated( )
      F2:onStart( )
      F2:onResume( )
    • 切回到第一个Fragment
      F2:onHiddenChanged( )
      F:onHiddenChanged( )
    • 正常退出Activity
      F:onPause( )
      F2:onPause( )
      A:onPause( )
      F:onStop( )
      F2:onStop( )
      A:onStop( )
      F:onDestroyView( )
      F:onDestroy( )
      F:onDetach( )
      F2:onDestroyView( )
      F2:onDestroy( )
      F2:onDetach( )
      A:onDestroy( )
    • 按Home键进入后台后再回到前前台(没有切换到第二个Fragment)
      F:onPause( )
      A:onPause( )
      F:onStop( )
      A:onStop( )
      F:onSaveInstanceState( )
      A:onSaveInstanceState( )
    • 回到前台
      A:onRestart( )
      F:onStart( )
      A:onStart( )
      A:onResume( )
      F:onResume( )
    • 按Home键进入后台后再回到前前台(切换到第二个Fragment)
      F:onPause( )
      F2:onPause( )
      A:onPause( )
      F:onStop( )
      F2:onStop( )
      A:onStop( )
      F:onSaveInstanceState( )
      F2:onSaveInstanceState( )
      A:onSaveInstanceState( )
    • 回到前台
      A:onRestart( )
      F:onStart( )
      F2:onStart( )
      A:onStart( )
      A:onResume( )
      F:onResume( )
      F2:onResume( )

    Activity和Fragment的通信方式

    1. 通过setArguments()传递Bundle对象,需要在Fragment被Add之前加入。
    2. 通过接口回调
    3. 通过getActivity()获取依赖Activity的实例,必须在Fragment和Activity相互关联之后才可以,否则获取为Null。

    FragmentActivity

    FragmentActivity 继承自Activity,用来解决android3.0 之前没有fragment的api,所以在使用的时候需要导入support包,同时继承fragmentActivity,这样在activity中就能嵌入fragment来实现你想要的布局效果。

    相关文章

      网友评论

          本文标题:Fragment

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