前言:前面几篇都是从Activity的使用慢慢拓伸得,这次依旧不例外。要将Activity当然不免要将一下Fragment了,Fragment使用十分广泛的,要想了解它,请往下看...
一、Fragment介绍:
Fragment中文意思叫“碎片”,它和Activity一样都是用于界面的显示的,可以把它当作Activity的一个组成部分,相当于轻量级的 Activity。我们常常用Activity来进行视图的展示,但是Activity太多了,清单文件中的信息也会很多(因为每新建一个Activity都要在清单文件中进行注册)。然而当Fragment出现后(它是3.0之后才有的API),若是我们使用Fragment来辅助进行页面的显示工作的话,则不会有这个问题(因为Fragment是不需要在清单文件中进行注册的),而且使用Fragment可以充分的利用空间,比如我们常见的抽屉导航的效果。如:手机QQ的效果:
估计大家对这样的效果很是心动吧?是不是很想知道这样的效果是怎么完成的?那么再接下来Fragment系列的博文中我会以实现抽屉导航为例子,慢慢来告诉大家的
![大笑](http://static.blog.csdn.net/xheditor/xheditor_emot/default/laugh.gif)
二、Fragment的基本使用:(动态、静态)
案例一:演示Fragment的创建(动态添加Fragment)以及介绍其生命周期
- 新建Android项目
- 创建一个FragmentLife类,其代码如下:
public class FragmentLife extends Fragment{
/**
* 在fragment与Activity关联之后调调查用
* 注:初始化Fragment参数可以从getArguments()获得,但当Fragment附加到Activity之后,就无法再调用setArguments()
*/
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
System.out.println("onAttach...");
}
/**
* Fragment初次创建时调用
* 注:尽管它看起来像是Activity的OnCreate()函数,但这个只是用来创建Fragment的,此时的Activity还没有创建完成,
* 因Fragment也是Activity创建的一部分,因此所以如想在这里使用Activity中的一些资源,将会获取不到.比如:获取同
* 一个Activity中其它Frament的控件实例.如果想要获得Activity相关联的资源,必须在onActivityCreated中获取
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
System.out.println("onCreate...");
}
/**
* Activity 获取 Fragment 返回的视图时调用:在这个Fragment构造它的用户接口视图(即布局)
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
System.out.println("onCreateView...");
// container:可以为NULL,如果父窗口值为NULL,这意味着该Fragment不可见,因为它没有附加到任何的视图层次中
// boolean attachToRoot:一般为FALSE,是否当前XML的根结点作为整个APP视图的根结点,设为TRUE,那返回的VIEW将是整个APP视图架构的根结点,一般不需要这么做
return inflater.inflate(R.layout.fragment_life, container, false);
}
/**
* 在Activity的 onCreateView()结束后调用:此时Activity已经创建完成(视图也创建完毕),该函数中才可以使用Activity的所有资源
*/
@Ov