【Android开发】Fragment加载

静态加载

	<!--静态加载,通过Android:name指定Fragment的路径-->
    <fragment
        android:id="@+id/fragment1"
        android:layout_width="200dp"
        android:layout_height="200dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:name="com.example.fragmentapplication.Fragment1"/>

动态加载

动态加载fragment

    <FrameLayout
        android:id="@+id/container"
        android:layout_width="200dp"
        android:layout_height="200dp">
	//MainActivity.kt
    //FragmentManager FragmentTransaction
    //1.获取Fragment管理器
    val manager = supportFragmentManager

    //2.获取Fragment事务
    val transaction = manager.beginTransaction()

    //3.动态添加Fragment
    //参数1:容器id
    //参数2:Fragment对象
    transaction.add(R.id.container, Fragment2())

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

动态修改fragment的内容

	//MainActivity.kt
    findViewById<View>(R.id.button).setOnClickListener {
    
     
    	//1.获取Fragment管理器
        val manager = supportFragmentManager

        //2.获取Fragment对象
        val f1 = manager.findFragmentById(R.id.fragment1)

        //3.获取Fragment对象的视图
        val v1 = f1!!.view

        //4.在视图中找到指定的控件
        val t1 = v1!!.findViewById<TextView>(R.id.txt1)

        //5.修改控件的内容
        t1.text = "这是动态生成的内容"
    }

在一个fragment中添加另一个fragment

   //fragment2.kt
   override fun onCreateView(
       inflater: LayoutInflater, container: ViewGroup?,
       savedInstanceState: Bundle?
   ): View? {
    
    
       // Inflate the layout for this fragment
       val v = inflater.inflate(R.layout.fragment_2, container, false)
       v.findViewById<View>(R.id.txt2).setOnClickListener {
    
    
           val transaction = fragmentManager!!.beginTransaction()
           transaction.add(R.id.container, Fragment3())
           transaction.commit()
       }
       return v
   }

猜你喜欢

转载自blog.csdn.net/weixin_42020386/article/details/112847211