android fragment介绍

fragment是activity当中的一个片段或者活动行为。fragment可以用来构建丰富的UI,并且fragment是可重用的。我们可以把fragment想象成activity的子模块,但是fragment有其自己的生命周期,并且你可以根据需要对这个模块进行添加(add)、替换(replace)、移除(remove),同时fragment是可以被不同的activity复用的。

Fragment的生命周期

上面提到fragment有自己的生命周期,并且看起来很activity比较“像”,所以它也有自己的一套方法。从fragment加载到fragment销毁,它总共会经历如下的几个生命周期:

Fragment被加载

onAttach()

onCreate()

onCreateView()

onActivityCreate()

onStart()

onResume()

Fragment被激活

onPause()

onStop()

onDestroyView()

onDestroy()

onDetach()

Fragment被销毁
onCreate()方法会在创建fragment时调用。

onCreateView()方法会在系统第一次绘制fragment的视图时调用。在这一步,你需要返回一个视图作为fragment的根视图。当然,如果你不需要绘制UI,你也可以返回null。

onPause()方法会在用户离开fragment时调用,暂停并不代表销毁。onPause()方法通常用来等待你的其它操作完成再返回处理当前fragment的数据。

绝大多数app需要实现至少上面提到的三个方法。但是你也可能会需要操控fragment的整个生命周期,activity和fragment的对应关系如下:

 

fragment实现

一般情况下,实现一个fragment只需要集成fragment方法。

当然,android中也有其他的几个fragment用来使用。

DialogFragment用来展现浮动的对话框。通常用来创建对话框窗口。

ListFragment用来展示列表,配合adapter(比如SimpleCursorAdapter)使用。和ListActivity有些类似。ListFragment提供了几个用来操控list view的方法:比如onListItemClick()。

PreferenceFragment有些类似于PreferenceActivity,主要用来创建设置类的界面。

 

给Fragment添加UI

虽然fragment通常作为activity的一部分来使用,但是它也有自己的UI界面。给fragment添加UI,我们需要实现onCreateView()方法。这个方法通常用来返回一个View视图。

Note:如果你的Fragment是实现自ListFragment,onCreate会默认实现一个View,所以你不需要再去继承它。
onCreateView返回的View通常用inflate来完成。代码片段如下:

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

return  inflater.inflate(R.layout.fragment_posts, container, false);

}
container参数是来自activity的,作为fragment的父级UI的布局。

inflater()方法通常会占有三个参数:

1, 需要用来扩展的布局;

2, 用来放置扩展布局的容器;

3, 是否需要绑定到ViewGroup container。

 

Fragment的两种加载方式

android fragment加载方式有两种:静态加载、动态加载。

两种加载方式将在下一篇中介绍。