动态添加碎片

2016-04-22  本文已影响227人  TTTqiu
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 步:
  1. 创建待添加的碎片实例。
  2. 获取到 FragmentManager,在活动中可以直接调用 getFragmentManager() 方法得到。
  3. 开启一个事务,通过调用 beginTransaction() 方法开启。
  4. 向容器内加入碎片,一般使用 replace() 方法实现,需要传入容器的 id 和待添加的碎片实例。
  5. 提交事务,调用 commit() 方法来完成。
4. 在碎片中模拟返回栈

在事务提交之前调用了 FragmentTransaction 的 addToBackStack()方法,它可以接收一个名字用于描述返回栈的状态,一般传入null 即可。

transaction.addToBackStack(null);

这样按下 Back 键,程序不会退出,而是回到上一个碎片。

上一篇 下一篇

猜你喜欢

热点阅读