初步理解Android Fragment

来源:互联网 发布:知乎课程的定义 编辑:程序博客网 时间:2024/04/30 01:39

1、Fragment 的定义

Android是在Android 3.0 (API level 11)开始引入Fragment的。

一个Activity中可以有多个Fragment,每个Fragment都有自己的生命周期和布局文件,可以把Activity拆分成不同的功能可以单独处理用户事件。因此可以把Fragment看作是Activity的组成部分,在Activity运行的时候可以动态的添加、替换、移除某个Fragment。

  一个Fragment可以在多个Activity中复用。

  当开发的应用程序同时适用于平板电脑和手机时,可以利用Fragment实现灵活的布局,改善用户体验。如图:


2、Fragment的生命周期



(1)onAttach()//当一个Fragment对象关联到一个Activity时调用。

(2)onCreate()//初始创建Fragment对象时调用。

(3)onCreateView()//创建与Fragment对象关联的View视图时调用。

(4)onActivityCreated()//Activity对象完成自己的onCreate方法时调用。

(5)、onStart()//Fragment对象在ui可见时调用。

(6)onResume()//Fragment对象的ui可以与用户交互时调用。

(7)onPause()//Fragment对象可见,但不可交互。有Activity对象转为onPause状态时调用。

(8)onStop()//有空间完全遮挡;或者宿主Activity对象转为onStop状态时调用。

(9)onDestroyView()//Fragment对象清理view资源时调用,也就是移除fragment中的视图。

(10)onDestroy()//Fragment对象完成对象清理View资源时调用。

(11)onDetach()//Fragment对象没有与Activity对象关联时调用。

注意:除了onCreateView,其他的所有方法如果你重写了,必须调用父类对于该方法的实现。


3、Fragment的使用

创建Fragment必须实现三个回调函数:

  onCreate():系统在创建Fragment的时候调用这个方法,这里应该初始化相关的组件,一些即便是被暂停或者被停止时依然需要保留的东西

  onCreateView():当第一次绘制Fragment的UI时系统调用这个方法,必须返回一个View,如果Fragment不提供UI也可以返回null。

  注意,如果继承自ListFragment,onCreateView()默认的实现会返回一个ListView,所以不用自己实现。

  onPause():当用户离开Fragment时第一个调用这个方法,需要提交一些变化,因为用户很可能不再返回来。

(没有布局文件的Fragment实际上是为了保存,当Activity重启时,保存大量数据准备的)

Fragment与Activity通信:

因为所有的Fragment都是依附于Activity的,所以通信起来并不复杂,大概归纳为:

a、如果你Activity中包含自己管理的Fragment的引用,可以通过引用直接访问所有的Fragment的public方法

b、如果Activity中未保存任何Fragment的引用,那么没关系,每个Fragment都有一个唯一的TAG或者ID,可以通过getFragmentManager.findFragmentByTag()或者findFragmentById()获得任何Fragment实例,然后进行操作。

c、在Fragment中可以通过getActivity得到当前绑定的Activity的实例,然后进行操作。

注:如果在Fragment中需要Context,可以通过调用getActivity(),如果该Context需要在Activity被销毁后还存在,则使用getActivity().getApplicationContext()。


以上为参考博客整理的资料

深入学习贴:http://blog.csdn.net/lmj623565791/article/details/37970961




0 0