1. 创建新的碎片布局及类::
2. 在主布局中需要添加碎片的地方放置一个容器布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:id="@+id/left_fragment"
android:name="com.example.fragmenttest.LeftFragment"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<FrameLayout
android:id="@+id/right_layout"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" >
<fragment
android:id="@+id/right_fragment"
android:name="com.example.fragmenttest.RightFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
</LinearLayout>
3. 在代码中替换 FrameLayout 里的内容:
AnotherRightFragment fragment = new AnotherRightFragment();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction transaction = fragmentManager. beginTransaction();
transaction.replace(R.id.right_layout, fragment);
transaction.commit();
动态添加碎片主要分为 5 步:
- 创建待添加的碎片实例。
- 获取到 FragmentManager,在活动中可以直接调用 getFragmentManager() 方法得到。
- 开启一个事务,通过调用 beginTransaction() 方法开启。
- 向容器内加入碎片,一般使用 replace() 方法实现,需要传入容器的 id 和待添加的碎片实例。
- 提交事务,调用 commit() 方法来完成。
4. 在碎片中模拟返回栈
在事务提交之前调用了 FragmentTransaction 的 addToBackStack()方法,它可以接收一个名字用于描述返回栈的状态,一般传入null 即可。
transaction.addToBackStack(null);
这样按下 Back 键,程序不会退出,而是回到上一个碎片。