Fragment是一种可以嵌入在Activity当中的UI片段,它能让程序更加合理充分利用大屏的空间。示例一个Fragment的简单写法,在Activity中添加两个Fragment,并让这俩个Fragment平分Activity的空间。
1.通过布局添加
新建一个左侧的Fragment的布局:left_fragment.xml,代码如下:
新建一个左侧的Fragment的布局:right_fragment.xml,代码如下:
左边编写的LeftFragment代码如下:
class LeftFragment: Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.left_fragment,container,false)
}
}
右边编写的RightFragment代码如下:
class RightFragment :Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.right_fragment,container,false)
}
}
activity中引用:
2.动态添加步骤:
1>创建待添加Fragment的实例
2>获取FragmentManager,在Activity中可以直接调用getSupportFragmentManage()方法获取
3>开启一个事务,通过调用beginTransation()方法开启
4>向容器添加或者替换Fragment,一般是通过replce方法实现,需要传入容器的id和待添加的Fragment实例
5>提交事务,调用commit()方法来完成
如果想要程序在按下back键之后不直接退出,可以使用addtoBackStack()方法,将一个事务添加到返回栈中,该方法中可以需要一个用于描述栈返回状态的名字,一般用null
private fun replaceFragment(fragment:Fragment){
val fragmentManager=supportFragmentManager
val transaction=fragmentManager.beginTransaction()
transaction.replace(R.id.right_fragment,fragment)
transaction.addToBackStack(null)
transaction.commit()
}