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