安卓訓練-開始-使用 Fragment 構造動態 UI-建立 Fragment

來源:互聯網
上載者:User

標籤:android   安卓   安卓文檔   

建立 Fragment上一課下一課這節課教你
  1. 建立一個 Fragment 類
  2. 使用 XML 添加 Fragment 到 Activity
你還需要閱讀
  • Fragments
試試 下載樣本

FragmentBasics.zip

你可以認為 fragment 是 activity 的模組化的部分,它有自己的生命週期,接收自己的輸入事件,你可以在 activity 的運行過程中把它添加到 activity 或從 activity 中刪除它(有點像一個你可以在不同 activity 中使用的"子 activity")。這節課教你怎樣使用支援庫擴充Fragment 類,讓你的應用與運行低至安卓 1.6版本的裝置保持相容。

注意:如果你決定了你的應用要求的最小 API 等級是11或更高,你不需要使用支援庫,你可以使用由 Fragment 類和相關 API 構建的架構。你需要注意到這節課著重介紹使用支援庫的 API,它使用特定的包簽名,有時 API 名稱和平台包含的版本有些不一樣。

在開始這節課之前,你必須設定你的安卓工程使用支援庫。如果你以前沒用過支援庫,根據設定支援庫文檔設定你的工程使用v4 庫。不過,你也可以使用v7 appcompat 庫,它與安卓 2.1(API 等級 7)相容並且包含Fragment API,使你的 activity 包含操作欄。

建立一個 Fragment 類

為了建立一個 fragment,繼承 Fragment 類,然後覆蓋關鍵的生命週期方法插入你的應用邏輯,和你對Activity 類做的相似。

一個不同的地方是當你建立一個 Fragment 時你必須使用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) {        // 為這個 fragment 渲染布局        return inflater.inflate(R.layout.article_view, container, false);    }}

就像一個 activity,一個 fragment 應該實現其他的生命週期回調方法,這允許你在 fragment 添加到 activity 或從 activity 中刪除時或 activity 的生命狀態轉變時,管理 fragment 的狀態。例如,當一個 activity 的onPause() 方法被調用,這個 activity 中的任何 fragment 都收到一個onPause() 調用。

更多關於 fragment 生命週期和回調方法的資訊,參見 Fragments 開發人員指南。

使用 XML 添加 Fragment 到 Activity

Fragment 是可重用的,模組化的 UI 組件,一個 Fragment 類的每個執行個體必須和一個父FragmentActivity 關聯。你可以通過在你的 activity 的布局 XML 檔案中定義每個 fragment 來實現這種關聯。

注意: FragmentActivity 支援庫為了在比 API 等級 11老的系統版本上處理 fragment而提供的一個特殊的 activity。如果你支援的最低系統版本是 API 等級 11 或更高,你可以使用一個常規的Activity

這裡是一個當裝置是大螢幕時(由目錄名稱中的 large 限定符指定)給一個 activity 添加兩個 fragment 的布局檔案的例子。

res/layout-large/news_articles.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="horizontal"    android:layout_width="fill_parent"    android:layout_height="fill_parent">    <fragment android:name="com.example.android.fragments.HeadlinesFragment"              android:id="@+id/headlines_fragment"              android:layout_weight="1"              android:layout_width="0dp"              android:layout_height="match_parent" />    <fragment android:name="com.example.android.fragments.ArticleFragment"              android:id="@+id/article_fragment"              android:layout_weight="2"              android:layout_width="0dp"              android:layout_height="match_parent" /></LinearLayout>

技巧:更多關於為不同的螢幕尺寸建立布局的資訊,參見支援不同的螢幕尺寸。

然後給你的 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 庫,你的 activity 應該繼承ActionBarActivity,它是FragmentActivity 的一個子類(更多資訊,參見添加操作欄)。

注意:當你通過在布局 XML 中定義 fragment 來添加 fragment 到 activity 時,你不能在運行時刪除這個 fragment。如果你計劃根據使用者操作換入或換出 fragment,你必須在 activity 第一次啟動時添加 fragment 到 activity,這會在下節課介紹。

上一課下一課   

安卓訓練-開始-使用 Fragment 構造動態 UI-建立 Fragment

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.