目录
5.2.4 Fragment 和 Activity 之间的交互
5.2 Fragment 的使用方式
介绍了这么多抽象的东西,是时候学习一下 Fragment 的具体用法了。首先我们要创建一个平板模拟器,创建模拟器的方法在第1章中已经学过了,这里就不再赘述。这次我们选择创建一个 PixelC平板模拟器,创建完成后启动模拟器,效果如 图5.4 所示。

好了,准备工作都完成了,接着新建一个 FragmentTest 项目,然后开始我们的 Fragment 探索之旅吧。
5.2.1 Fragment 的简单用法
这里我们准备先写一个最简单的 Fragment 示例来练练手。在一个 Activity 当中添加两个 Fragment ,并让这两个 Fragment 平分 Activity 的空间。
新建一个左侧 Fragment 的布局 left_fragment.xml ,代码如下所示:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:background="#DDDDDD"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="Button" />
</LinearLayout>
这个布局非常简单,只放置了一个按钮,并让它水平居中显示。
然后新建右侧 Fragment 的布局 right_fragment.xml ,代码如下所示:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:background="#00ff00"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textSize="24sp"
android:text="This is right fragment"
/>
</LinearLayout>
可以看到,我们将这个布局的背景色设置成了绿色,并放置了一个 TextView 用于显示一段文 本。
接着新建一个 LeftFragment 类,并让它继承自 Fragment 。注意,这里可能会有两个不同包 下的 Fragment 供你选择:一个是系统内置的 android.app.Fragment ,一个是 AndroidX库中的androidx.fragment.app.Fragment 。这里请一定要使用 AndroidX库中的Fragment ,因 为它可以让Fragment 的特性在所有 Android 系统版本中保持一致,而系统内置的 Fragment 在 Android 9.0 版本中已被废弃。使用 AndroidX库中的 Fragment 并不需要在 build.gradle 文件中添加额外的依赖,只要你在创建新项目时勾选了Useandr oidx.* artifacts 选项,Android Studio 会自动帮你导入必要的 AndroidX库。
现在编写一下 LeftFragment 中的代码,如下所示:
class LeftFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.le