Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android Fragment使用示例

Android Fragment使用示例

編輯:Android開發實例

1.Fragment 誕生初衷

    自從Android 3.0中引入fragment的概念,根據詞海的翻譯可以譯為:碎片、片段。其上的是為了解決不同屏幕分辯率的動態和靈活UI設計。大屏幕如平板小屏幕如手機,平板電腦的設計使得其有更多的空間來放更多的UI組件,而多出來的空間存放UI使其會產生更多的交互,從而誕生了fragment。fragments 的設計不需要你來親自管理view hierarchy 的復雜變化,通過將Activity 的布局分散到frament 中,可以在運行時修改activity 的外觀,並且由activity 管理的back stack 中保存些變化。

2.Fragment 設計理念

  在設計應用時特別是Android 應用 ,有眾多的分辨率要去適應,而fragment可以讓你在屏幕不同的屏幕上動態管理UI。例如:通訊應用程序(QQ),用戶列表可以在左邊,消息窗口在右邊的設計。而在手機屏幕用戶列表填充屏幕當點擊某一用戶時,則彈出對話窗口的設計,如下圖:

3.Fragment 生命周期

每一個fragment 都有自己的一套生命周期回調方法和處理自己的用戶輸入事件。 對應生命周期可參考下圖:

1.onAttach() 當Fragment附加到Activity上調用。

2.onCreate() Fragment初始化操作

3.onCreateView() 用於首次繪制用戶界面的回調方法,必須返回要創建的Fragments 視圖UI。假如你不希望提供Fragments 用戶界面則可以返回NULL。

4.onActivityCreated() 父Activity和Fragment的UI都被完全創建完後調用。

5.onDestoryView() Fragment的UI被分離時調用。

6.onDatch() Fragment從父Activity身上分離的時候調用。

7.onPause() 當用戶離開這個Fragments 的時候調用,這時你要提交任何應該持久的變化,因為用戶可能不會回來。

4.Fragment 示例

4.1 創建Fragment

 

  1. package com.malinkang.fragment;  
  2.  
  3. import android.os.Bundle;  
  4. import android.support.v4.app.Fragment;  
  5. import android.view.LayoutInflater;  
  6. import android.view.View;  
  7. import android.view.ViewGroup;  
  8.  
  9. public class FirstFragment extends Fragment {  
  10.  
  11.     @Override 
  12.     /**  
  13.      * inflater用於向fragment中添加view  
  14.      * container用來存放fragment其layout的ViewGroup對象  
  15.      * savedInstanceState類似於onCreate()中相同的Bundle參數,用於恢復狀態  
  16.      */ 
  17.     public View onCreateView(LayoutInflater inflater, ViewGroup container,  
  18.             Bundle savedInstanceState) {  
  19.         /**  
  20.          * inflater的inflate方法的三個參數分別是:  
  21.          *   
  22.          * int resource:fragment的layout資源ID。  
  23.          *   
  24.          * ViewGroup root:存放fragment的layout的ViewGroup  
  25.          *   
  26.          * boolean attachToRoot:是否在創建fragment的layout時,把layout添加到container上面去  
  27.          */ 
  28.         return inflater.inflate(R.layout.fragment_first, container, false);  
  29.     }  
  30.  

fragment_first.xml

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     android:layout_width="match_parent" 
  4.     android:layout_height="match_parent" 
  5.     android:orientation="vertical" > 
  6.  
  7.     <Button 
  8.         android:layout_width="match_parent" 
  9.         android:layout_height="wrap_content" 
  10.         android:text="第一個Fragment" /> 
  11.  
  12. </LinearLayout> 

4.2 添加Fragment到UI界面中
添加到UI界面有兩種方式:1.在xml文件中使用<fragment>標簽聲明 2.在Java代碼中將fragment添加到一個ViewGroup

本例采用第一種方式

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved