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()
https://aliu.oss-cn-hangzhou.aliyuncs.com
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加载方式有两种:静态加载、动态加载。
两种加载方式将在下一篇中介绍。