fragment相关

作者: mobile墨白 | 来源:发表于2019-07-30 21:12 被阅读0次

生命周期

image
  • onAttach:

onAttach()在fragment与Activity关联之后调用。初始化fragment参数可以从getArguments()获得,但当Fragment附加到Activity之后,就无法再调用setArguments(),这点和构造方法很类似

  • onCreate:

fragment初次创建时调用。类似Activity的OnCreate()函数,此时Activity还没有创建完成。如果想要获得Activity的资源,必须在onActivityCreated中获取。

  • onCreateView:

在这个fragment构造布局时调用,一般这时候绑定xml文件渲染view。

  • onActivityCreated:

在Activity的OnCreate()结束后调用此方法。在这个函数中才可以调用Activity的资源。

  • onStart:

此时Fragment对用户就是可见的了。但用户还未开始与Fragment交互。Fragment的OnStart()过与Activity的OnStart()是绑定的。

  • onResume:

当这个fragment对用户可见并且正在运行时调用。这是Fragment创建过程最后一个生命周期。Fragment的OnResume与Activity的OnResume是相互绑定的,意义是一样的。它依赖于包含它的activity的Activity.onResume。

  • onPause:

此回调与Activity的OnPause()相绑定,fragment对用户不可见的时候调用。

  • onStop:

与Activity的OnStop()相绑定,意义一样。已停止的Fragment可以直接返回到OnStart()回调,然后调用OnResume()。

  • onDestroyView:

如果Fragment即将被结束或保存,下一个回调将是onDestoryView()。会将onCreateView创建的视图与这个fragment分离。该fragment若要重新显示,将会创建新视图。该方法调用与onCreateView是否返回非null视图无关。它会潜在的在这个视图状态被保存之后以及它被它的父视图回收之前调用。

  • onDestroy:

当这个fragment不再使用时调用。需要注意的是,它即使经过了onDestroy()阶段,但仍然能从Activity中找到,因为它还没有Detach。

  • onDetach:

最后一个回调是onDetach()。调用它以后,Fragment就不再与Activity相绑定,它也不再拥有视图层次结构,它的所有资源都将被释放。


静态加载和动态加载:

静态加载:适用于单页面无需管理切换等fragment状态,例如某个页面切割成不同模块分别处理业务。
动态加载:常用于改变需要改变状态的页面,例如带有bottomNavgation的页面等。

  • 静态加载

image.png
  • 动态加载

image.png

Activity和Fragment数据交互

  • 组件获取

Activity获取Fragment的控件:getFragmentManager.findFragmentById(R.id.xxx)
Fragment获取Activity的控件:getActivity().findViewById(R.id.xxx)

  • 数据交互

Activity传递给Fragment:
1、eventbus(不建议)
2、接口回调
3、fragment里面写方法,activity调用
4、fragment的构造方法传参(只能初始化用一次)
5、activity跳转时setArgument(Bundle)传递

Fragment传递参数给Activity:
1、eventbus(不建议)
2、接口回调
3、activity里面写方法,fragment调用

Fragment与Fragment之间的数据互传
1、eventbus(不建议)
2、接口回调
3、fragment里面写方法,另一个fragment调用
4、创建时:找到接受数据的fragment对象,直接调用setArguments传数据
6、实时传递:就是以Activity为媒介,需要先在Activity获得f1传过来的数据, 再传到f2了


Fragment管理和事务

image.png

Fragment加载 详细见

  • FragmentManager管理Fragment的加载(add)、替换(replace)、删除(remove)等操作,此时的Fragment所在的容器一般选择用FrameLayout。

  • 使用ViewPager等容器去装载Fragment列表并通过他们自己的页面切换能力去切换Fragment。

本文整理自该文章

相关文章

  • Fragment相关

    fragment基本操作: 以下就v4包下的FragmentManager进行源码分析。 1、FragmentMa...

  • Fragment相关

    第五大组件 模块化(Modularity):我们不必把所有代码全部写在Activity中,而是把代码写在各自的Fr...

  • Fragment相关

    主要内容:Fragment简介、Fragment的生命周期、Fragment通信、两个Fragment的跳转 Fr...

  • fragment相关

    生命周期 onAttach: onAttach()在fragment与Activity关联之后调用。初始化frag...

  • Fragment 相关

    Fragment表示Activity中的行为或用户界面部分,我们可以将多个Fragment组合在一个Activit...

  • 2 Fragment相关

    Fragment为什么被称为第五大组件Fragment的生命周期Fragment之间的通信Fragment管理器:...

  • Fragment FragmentManager Fragmen

    Fragment相关类的关系及说明 UML类图 相关类说明 HostCallbacks:FragmentActiv...

  • 关于Fragment与ViewPager,PageAdapter

    Fragment相关: 1.懒加载 1.懒加载需要解决的问题:1.Fragment一般配合ViewPager使用,...

  • Android中Fragment的使用

    今天主要讲些Fragment的管理控制、性能优化以及和Activity的传输相关内容。 一、 管理Fragment...

  • Fragment相关知识总结

    生命周期函数 Fragment的生命周期依赖于其所属Activity的生命周期,只有当Activity处于Resu...

网友评论

    本文标题:fragment相关

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