美文网首页
动态添加碎片

动态添加碎片

作者: TTTqiu | 来源:发表于2016-04-22 10:41 被阅读227次
    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 键,程序不会退出,而是回到上一个碎片。

    相关文章

      网友评论

          本文标题:动态添加碎片

          本文链接:https://www.haomeiwen.com/subject/jdqxrttx.html