編寫:fastcome1985 - 原文:http://developer.android.com/training/basics/fragments/creating.html
Note: 如果APP的最低API版本是11或以上,則不必使用Support Library,我們可以直接使用API框架中的Fragment,本課主要講解基於Support Library的API,Support Library有一個特殊的包名,有時與平臺版本的API名字存在略微不同。
創建一個fragment,首先需要繼承Fragment類,然後在關鍵的生命週期方法中插入APP的邏輯,就像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) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.article_view, container, false);
}
}
更多關於fragment的聲明週期和回調方法,詳見Fragments developer guide.
Notes:FragmentActivity是Support Library提供的一個特殊activity ,用於處理API11版本以下的fragment。如果我們APP中的最低版本大於等於11,則可以使用普通的Activity。
large
字符來區分)時,它在佈局中增加了兩個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>
**Notes:**更多關於不同屏幕尺寸創建不同佈局的信息,請閱讀Supporting Different Screen Sizes
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);
}
}
**Note:**當通過XML佈局文件的方式將Fragment添加進activity時,Fragment是不能被動態移除的。如果想要在用戶交互的時候把fragment切入與切出,必須在activity啟動後,再將fragment添加進activity。這部分內容將在下節課闡述。