Android學習路線(二十一)運用Fragment構建動態UI——建立一個Fragment
你可以把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()方法的回調。