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();            }

相關文章
相關標籤/搜索