W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
編寫:fastcome1985 - 原文:https://developer.android.com/training/basics/fragments/creating.html
可以把 Fragment 想象成 Activity 的模塊,它擁有自己的生命周期、接收輸入事件,可以在 Acvitity 運行過程中添加或者移除(有點像“子 Activity”,可以在不同的 Activity 里重復使用)。這一課教我們將學習繼承 Support Library 中的 Fragment,使 APP 在 Android 1.6 這樣的低版本上仍能保持兼容。
在開始之前,必須在項目中先引用 Support Library。如果你從未使用過 Support Library,可根據(jù)文檔 設置 Support Library 在項目中使用 v4 庫。當然,也可以使用包含 APP Bar 的 v7 appcompat 庫。該庫兼容 Android 2.1 (API level 7),同時也包含了 Fragment API。
首先從 Fragment 繼承并創(chuàng)建 Fragment,然后在關鍵的生命周期方法中插入代碼(就和在處理 Activity 時一樣)。
其中一個區(qū)別是:創(chuàng)建 Fragment 時,必須重寫 onCreateView() 回調(diào)方法來定義布局。事實上,這是唯一一個為使 Fragment 運行起來需要重寫的回調(diào)方法。比如,下面是一個自定義布局的示例 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 從 Activity 添加或者移除、或 Activity 生命周期發(fā)生變化時,F(xiàn)ragment 通過生命周期回調(diào)函數(shù)管理其狀態(tài)。例如,當 Activity 的 onPause() 被調(diào)用時,它內(nèi)部所有 Fragment 的 onPause() 方法也會被觸發(fā)。
更多關于 Fragment 的聲明周期和回調(diào)方法,詳見 Fragments 開發(fā)指南.
Fragments 是可重用的、模塊化的 UI 組件。每個 Fragment 實例都必須與一個 FragmentActivity 關聯(lián)。我們可以在 Activity 的 XML 布局文件中逐個定義 Fragment 來實現(xiàn)這種關聯(lián)。
注: FragmentActivity 是 Support Library 提供的一種特殊 Activity,用于處理 API 11 版本以下的 Fragment。如果我們 APP 中的最低版本大于等于 11,則可以使用普通的 Activity。
以下是一個 XML 布局的例子:當屏幕被認為是 "large"(用目錄名稱中的 large
字符來區(qū)分)時,它在布局中增加了兩個 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>
提示: 更多關于不同屏幕尺寸創(chuàng)建不同布局的信息,請閱讀 兼容不同屏幕尺寸。
然后將這個布局文件用到 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 應該改為繼承自 AppCompatActivity,AppCompatActivity 是 FragmentActivity 的子類(更多關于這方面的內(nèi)容,請閱讀 添加 App Bar)。
注: 當通過 XML 布局文件的方式將 Fragment 添加進 Activity 時,F(xiàn)ragment 是不能被動態(tài)移除的。如果想要在用戶交互的時候把 Fragment 切入與切出,必須在 Activity 啟動后,再將 Fragment 添加進 Activity。這部分內(nèi)容將在下節(jié)課闡述。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: