创建Fragment
可以把 Fragment 想象成 Activity 的模块,它拥有自己的生命周期、接收输入事件,可以在 Acvitity 运行过程中添加或者移除(有点像“子 Activity”,可以在不同的 Activity 里重复使用)。
创建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 从 Activity 添加或者移除、或 Activity 生命周期发生变化时,Fragment 通过生命周期回调函数管理其状态。例如,当 Activity 的 onPause() 被调用时,它内部所有 Fragment 的 onPause() 方法也会被触发。
更多关于 Fragment 的声明周期和回调方法,详见 Fragments 开发指南.
用 XML 将 Fragment 添加到 Activity
Fragments 是可重用的、模块化的 UI 组件。每个 Fragment 实例都必须与一个 FragmentActivity 关联。我们可以在 Activity 的 XML 布局文件中逐个定义 Fragment 来实现这种关联。
注: FragmentActivity 是 Support Library 提供的一种特殊 Activity,用于处理 API 11 版本以下的 Fragment。如果我们 APP 中的最低版本大于等于 11,则可以使用普通的 Activity。
以下是一个 XML 布局的例子:当屏幕被认为是 "large"(用目录名称中的 large 字符来区分)时,它在布局中增加了两个 Fragment。
res/layout-large/news_articles.xml
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
android:id="@+id/headlines_fragment"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent" />
android:id=