Android Fragment简记

前面曾经“写”过一篇关于Fragment的文章了,但时间隔了太久,我自己又给忘了,而且文章也不够清晰利落。于是又记了这么一篇文章。

主要参考自CodePath Android Cliffnotes => Creating and Using Fragments

因为是简记,只求自己理解,不能保证正确和权威。

Fragment一般可以理解成Activity的一部分(视图,UI)。

定义Fragment

一个Fragment包含两部分,View和Java类。

View可以是XML布局,也可以是纯Java代码的View。

Java类需要继承自Fragment类。在support library v4中的Fragment类可最低支持API-4。

在Activity中加入Fragment

首先Activity要支持Fragment:如果使用的是support library中的Fragment,那么Activity也需要继承自support library中的FragmentActivity。

添加的方式有两种——静态的和动态的。

静态

直接在Activity的XML布局文件中加入Fragment。

class属性指定Java类。

动态

使用FragmentManager。

但首先也需要在Activity的布局中有一个place holder给Fragment提供位置。

生命周期

  • onAttach() Fragment attach到Activity时调用
  • onCreate() 对Fragment做初始化
  • onCreateView() 当Fragment需要创建View时调用
  • onActivityCreated() 当宿主Activity完成了 onCreate()方法时被调用
  • onDestroyView() 当Fragment开始被销毁时调用
  • onStart() 当Fragment可见时调用
  • onResume() 获取一些昂贵的资源,如位置、传感器等
  • onPause() 释放昂贵资源,提交更改

与Fragment的交互

Fragment不应该相互间直接通信,而应通过Activity来进行。有三个方法可以在Fragment和Activity之间进行通信。

带参数的Fragment

在某些情况下,Fragment可能需要特定的参数。(用来初始化Fragment。)

一个常用模式是使用 newInstance()来创建带参数的Fragment。(这样做的原因是Fragment只能有一个无参的构造方法。)

Activity调用Fragment方法

在Fragment中的Listener

如果Fragment需要共享事件给Activity,则需要利用这种方法。

Fragment中定义一个接口,并且由Activity来实现这个接口。在 onAttach()方法中将实现了这个接口的Activity获取到。

Fragment与ActionBar菜单项

如果Fragment中有相关联的ActionBar菜单项,可以在Fragment中通过 onCreateOptionsMenu()方法来进行设置,就与Activity中一致。

需要注意的是,只有事件没有在Activity中被处理掉时,Fragment中的事件回调才会被调用。

但你需要设置该Fragment中有菜单项。

创建菜单:

响应:

Fragment间的导航

可用:

  • ActionBar Tabs
  • Fragment Navigation Drawer
  • ViewPager

管理Fragment的回退栈

如果需要用后退键来回退Fragment,则在FragmentTransaction中调用 addToBackstack()即可。

也可进行弹出:



  1. Pingback:

  2. 本人卖早餐,和面条。 今天包子还没蒸熟的时候,来一叔叔问:包子熟没有?答:没有。然后,五分钟以后又来问,答:还没有,又过五分钟又来问:这回总熟了吧?答:熟了!然后叔叔说:老板来碗面…… http://url.cn/byn4yC