Android:創建一個片段

創建一個片段

       你可以把片段想象爲活動中的一個模塊化的部分,它有自己的生命週期,接受自己的輸入事件,並且在活動運行時,你能夠添加它或者移除它(有點像子活動,你能夠在不同的活動中使用它)。這篇文章講解的就是如何使用Support Library,然後繼承Fragment類,同時保證你的APP能夠在低版本運行。

       注意:如果由於其它原因,你決定你的APP的最低API 版本是11或者更高,你就不用使用Support Library,直接使用系統裏面的Fragment 類和相關的API.但是請注意,這個文章講的是使用Support Library裏面的APIS,它有個特定的包簽名,並且少量API名字跟機器本身的API名字不同。

 

創建一個片段類

       要創建一個片段類,就要繼承Fragment類並複寫它的關鍵的生命週期方法來插入你的APP 邏輯,跟創建一個活動類似。

       不同的是當創建一個Fragment時,你必須使用onCreateView()回調方法來定義它的佈局。事實上,這是讓一個片段運行唯一必須實現的回調方法。下面是一個簡單的片段,它指定了自己的佈局。

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);

    }

}

       跟活動一樣,一個片段應該實現其它生命週期回調方法,這樣才能在添加它,移除它,以及活動自己的生命週期狀態切換時來管理片段自己的狀態。例如當活動的onPause()方法被調用時,任何在這個活動中的片段都會調用各種的onPause()方法。

       更多關於片段生命週期和回調方法的講解見片段開發指南。

 

使用XML將一個片段添加到活動中去

       由於片段是可以重複使用的,模塊中的UI組件,片段類的各個實例都必須跟父片段活動相關聯。你能夠通過將片段定義在活動的佈局XML文件裏面來實現這種聯繫。

注意:片段活動(FragmentActivity)是一個特殊的活動,它因爲有Support Library庫的支持,可以在系統版本低於API  11的機器上處理片段。如果最低系統版本是11或者更高,你能直接使用活動(Activity)。

如下是一個當設備屏幕很大的時候的佈局文件,它包含了兩個片段(目錄名字使用large限定詞)。

res/layout-large/news_articles.xml:

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
 
    <fragmentandroid:name="com.example.android.fragments.HeadlinesFragment"
              android:id="@+id/headlines_fragment"
              android:layout_weight="1"
              android:layout_width="0dp"
              android:layout_height="match_parent"/>
 
    <fragmentandroid: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>

 

如下是活動對這個佈局文件的使用:

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);

    }

}

注意:當你在佈局XML文件中定義片段時,在運行時,你不能移除這個片段。當你需要在用戶交互的時候將片段換入或者換出時,你必須在活動第一次開始時來添加片段,詳見下篇文章:創建活動的UI.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章