android学习笔记之Fragment(一)

Fragment(Android3.0 API Level 11引入,以前的怎么办? 不要紧可使用Android support library 注意:使用这个库你的Activity须要继承FragmentActivity):数据库

Fragments可使你可以将activity分离成多个可重用的组件,每一个都有它本身的生命周期和UI。ide

Fragments的主要优势:你能够轻松得建立动态灵活的UI设计,能够适应于不一样的屏幕尺寸。从手机到平板电脑。.net

每一个Fragment都是一个独立的模块,牢牢地与activity绑定在一块儿。能够运行中动态地移除、加入、交换等。线程

Fragments提供一个新的方式让你在不一样的安卓设备上统一你的UI。设计

 

建立新的Fragments:继承

大多数状况你是须要给Fragment设计UI的,可是也有可能你建立一个Fragment不包含任何UI,用来给Activity提供一些后台的帮助。生命周期

那么若是我须要UI呢,代码中如何建立或者加载?资源

DEMO: 代码中get

public class MySkeletonFragment extends Fragment {
   @Override
   public View onCreateView(LayoutInflater inflater,
                                 ViewGroup container,
                                 Bundle savedInstanceState) {
     // 建立或者解析加载一个视图,而后返回做为Fragment的UIit

     // 若是这个Fragment没有UI,那么返回NULL

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

在前提的前提仍是先讨论下Fragment的生命周期:

首先明白的一点就是,Fragment是Activity的一部分,因此Activity的生命周期也是会影响到它的。

Fragment的生命周期像极了Activity:

image

 

另一张来自Google官网的截图:

那么咱们根据这图从上往下:

1.onAttach() 当Fragment附加到父窗口Activity上时。(成为Activity的一部分)

@Override
public void onAttach(Activity activity) {
   super.onAttach(activity);
   // 这个方法你能够获取到父Activity的引用。

}

2.onCreate 这个方法通常作一些Fragment的初始化操做

@Override
public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   // 初始化Fragment

}
3.onCreateView 一旦Fragment已经建立,为了去给Fragment建立它本身的UI,这个方法就是意义所在。

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

     // 建立或者解析加载一个视图,而后返回做为Fragment的UI

     // 若是这个Fragment没有UI,那么返回NULL

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

}

4.onActivityCreated 当父Activity和当前的Fragment的UI都完整建立完的时候被调用

@Override
public void onActivityCreated(Bundle savedInstanceState) {
   super.onActivityCreated(savedInstanceState);

   // 完成Fragment的初始化,不对前面不是已经初始化好了么?

   //这个方法主要是初始化那些你须要你的父Activity或者Fragment的UI已经被完整初始化才能初始化的元素。

  //具体你看图中的位置你能看出点端倪来。好比UI的元素没被解析反射进来,你还想用? 想得美,等它初始化完,你再用。
}

5.onStart 、onResume 、onPause这些看看就懂不解释了

6.别忘了Fragment也是有onSaveInstance的

    @Override
    public void onSaveInstanceState(Bundle savedInstanceState) { 
      //这个Bundle会被传入到onCreate、onCreateView
      super.onSaveInstanceState(savedInstanceState);
    }
7.onDestoryView 当你的Fragment的UI被分离的时候

     @Override 
     public void onDestroyView() { 
        //清除全部跟视图相关的资源

        super.onDestroyView();
      }
8.onDestory 生命周期的末尾了。。。

        @Override
        public void onDestroy(){ 
          //清除全部资源包括要结束的线程,关闭数据库链接等等。
          super.onDestroy();
        }
9.onDetach 当你的Fragment从父activity身上分离的时候

           @Override            public void onDetach() {              super.onDetach();            }

相关文章
相关标签/搜索