Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android學習路線(二十一)運用Fragment構建動態UI——創建一個Fragment

Android學習路線(二十一)運用Fragment構建動態UI——創建一個Fragment

編輯:關於Android編程

你可以把fragment看成是activity的模塊化部分,它擁有自己的生命周期,接受它自己的輸入事件,你可以在activity運行時添加或者刪除它(有點像是一個“子activity”,你可以在不同的activity中重用它)。本課將向你展示如何使用Support Libaray繼承 Fragment 類來讓你的應用能夠兼容正在運行Android 1.6的設備。

 提示: 如果你決定你的應用需求的最低API級別是11或者更高,那麼你不需要使用Support Library,你可以直接使用包含Fragment類的平台相關的APIs。本課主要重點是使用Support Library的APIs,這和已經包含了Fragment類的平台版本的區別是使用了一個指定的包簽名以及一些稍微不同的API名稱。

在你開始這堂課之前,你必須要設置好你的項目,讓他使用Support Library。如果你之前沒有使用過Support Library,跟著Support Library Setup 文檔來設置你的項目使用v4庫。你也可以使用v7 appcompat 庫讓你的應用activity能夠使用action bar,它能夠兼容到Android 2.1 (API level 7) 並且同樣包含Fragment APIs。

創建一個Fragment


要創建一個Fragment,首先繼承Fragment 類,然後覆蓋主要的生命周期方法來插入了你的應用邏輯,類似你在Activity 類中所做的。

創建一個Fragment 與activity的一個不同點是,你必須使用onCreateView() 回調方法來定義布局。事實上,你只需要覆蓋這一個回調方法就能夠讓這個fragment工作。下面是一個簡單的fragment指定布局的例子:

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.ViewGroup;

public class ArticleFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.article_view, container, false);
    }
}

就像是一個activity,fragment需要實現其他的回調方法,這樣就能夠允許你在它在actvity中被添加或移除時管理它的狀態,就像是activity切換時它的生命周期狀態。例如,當activity的onPause() 方法被調用,所有它內部的fragment都會收到onPause()方法的回調。

更多關於fragment生命周期以及回調方法的信息,請查看Fragments 開發向導。

使用XML向activity中添加一個fragment


由於fragment是可重用的,模塊化UI組件,它的每個實例都必須和一個父FragmentActivity關聯。你可以通過在你的activity的XML布局文件中定義fragment來獲取這個關聯。

提示: FragmentActivity 是在Support Library中提供的特殊的activity,用於處理在低於API級別為11的系統上使用fragment。如果你支持的最低系統版本的API級別是11或者更高,那麼你可以直接使用普通的Activity

下面是一個在大屏設備布局上添加了兩個fragment的例子。

res/layout-large/news_articles.xml



    

    

貼士: 更多關於為不同屏幕尺寸創建布局的信息,請查看支持不同的屏幕尺寸。

然後再activity中應用這個布局。

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;

public class MainActivity extends FragmentActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.news_articles);
    }
}

如果你使用的是v7 appcompat library,你的activity中應該要使用ActionBarActivity,它是FragmentActivity 的子類(更多信息,請查看Android學習路線(七)設置Action Bar)。

提示: 當你在activity的XML布局文件中添加一個fragment時,你不能再運行時移除這個fragment。如果你希望在用戶交互中隱藏於現實你的fragment,你就必須在activity第一次啟動時將fragment添加到activity中,在下堂課中會講到。

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