• 动态添加Fragment


    1. 在父视图中设置 Fragment 挂载点

      (1): 静态挂载

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:orientation="horizontal">
    
        <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"/>
    
    </LinearLayout>

      

      (2): 动态挂载

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:orientation="horizontal">
        
        <FrameLayout
            android:id="@+id/right_fragment"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"/>
    
    </LinearLayout>


     

    2. 创建 Fragment 实例

      (1): 新建java类,继承 android.support.v4.app.Fragment (使用支持库,可以让fragment在所有Android系统版本中保持功能一致性)

    public class DemoFragment extends Fragment

      

      (2): 重写 Fragment 中的 onCreateView 方法, 加载Fragment布局文件 

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        /*
        *参数1:布局资源id
        * 参数2:挂载该视图的父视图对象
        * 参数3:是否将视图挂载到父视图中,因为我们使用 FragmentManger 动态添加,所以此处为 false
        * */
        View view = inflater.inflate(R.layout.fragment_left, container, false);
        return view;
    }

    3.  获取 FragmentManager 对象

    //在Activity和Fragment中,通过 getSupportFragmentManager() 方法可以获取 FragmentManager 对象
    FragmentManager fm = getSupportFragmentManager();

    4.开启一个 FragmentManager 对象的事务

    //通过 FragmentManager 对象的 beginTransaction() 方法,开启事务
    FragmentTransaction transaction = fm.beginTransaction();

    5. 向容器中添加或替换 Fragment 实例

    /*
    * 通过 Transaction 对象的 add()或replace()方法,添加或替换 Fragment 对象。
    * 参数1:挂在Fragment对象的容器id
    * 参数2:被添加或替换的Fragment对象
    * */
    transaction.replace(R.id.right_fragment, fragment);

    6. 提交事务

    //提交事务
    transaction.commit();


     

  • 相关阅读:
    [codeforces] 97B Superset || 平面分治
    [hdu] 5696 区间的价值 || 序列分治
    [zoj] 1937 [poj] 2248 Addition Chains || ID-DFS
    [poj] 2286 The Rotation Game || ID-DFS
    [codeforces] 25E Test || hash
    luogu P1196 银河英雄传说
    luogu P1357 花园
    luogu P1156 垃圾陷阱
    luogu P1127 词链
    luogu P1131 时态同步
  • 原文地址:https://www.cnblogs.com/yingtoumao/p/8615952.html
Copyright © 2020-2023  润新知