編寫:fastcome1985 - 原文:http://developer.android.com/training/basics/fragments/creating.html
Note: 如果APP的最低API版本是11或以上,則不必使用Support Library,我們可以直接使用API框架中的Fragment,本課主要講解基于Support Library的API,Support Library有一個特殊的包名,有時與平臺版本的API名字存在略微不同。
創(chuàng)建一個fragment,首先需要繼承Fragment類,然后在關(guān)鍵的生命周期方法中插入APP的邏輯,就像activity一樣。
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);
}
}
更多關(guān)于fragment的聲明周期和回調(diào)方法,詳見Fragments developer guide.
Notes:FragmentActivity是Support Library提供的一個特殊activity ,用于處理API11版本以下的fragment。如果我們APP中的最低版本大于等于11,則可以使用普通的Activity。
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>
Notes:更多關(guān)于不同屏幕尺寸創(chuàng)建不同布局的信息,請閱讀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:當(dāng)通過XML布局文件的方式將Fragment添加進(jìn)activity時,F(xiàn)ragment是不能被動態(tài)移除的。如果想要在用戶交互的時候把fragment切入與切出,必須在activity啟動后,再將fragment添加進(jìn)activity。這部分內(nèi)容將在下節(jié)課闡述。