目录
第五章
5.1、动态添加Fragment
(1)创建待添加的Fragment的实例
(2)获取FragmentManager,在Activity中可以直接调用getSupportFragmentManager()方法获取
(3)通过调用beginTransaction()方法开启一个事务
(4)向容器内添加或替换Fragment,一般使用replace()方法实现
(5)提交事务,通过调用commit方法来完成。
5.2、在Fragment中实现返回栈
Fragment中可以使用addToBackStack()方法实现类似与返回栈的效果。
private fun replaceFragment(fragment: Fragment) {
val fragmentManager = supportFragmentManager
val transaction = fragmentManager.beginTransaction()
transaction.replace(R.id.rightLayout, fragment)
transaction.addToBackStack(null)
transaction.commit()
}
5.3、Fragment和Activity之间的交互
在Activity中调用Fragment的方法,可以通过调用FragmentManager的findFragmentById()方法,就能得到相对应的Fragment实例。
val fragment = supportFragmentManager.findFragmentById(R.id.leftFrag) as LeftFragment
在Fragement中调用Activity中调用Activity的方法,可以通过getActivity()方法得到和当前Fragment相关联的Activity实例。
if (activity != null) {
val mainActivity = activity as MainActivity
}
不同的Fragment之间交互
在一个Fragment中得到与它相关联的Activity,然后再通过这个Activity去获取另外一个Fragment的实例,这样就能实现不同Fragment之间的通信。
5.4、Fragment的生命周期
一个完整的Fragment周期:
onAttach()
onCreate()
onCreateView()
onActivityCreated()
onStart()
onResume()
onPause()
onStop()
onDestroyView()
onDestroy()
onDetach()
5.5、Kotlin扩展函数
扩展函数表示即使在不修改某个类的源码情况下,仍然可以打开这个类,向该类添加新的函数。
定义扩展函数的语法结构
fun ClassName.methodName(param1: Int, param2: Int): Int {
return 0
}
5.6、Kotlin运算符重载
运算符重载是一种允许开发者为自定义的类型定义特定的运算符行为的功能。
data class Point(val x: Int, val y: Int) {
operator fun plus(other: Point): Point {
return Point(x + other.x, y + other.y)
}
}
fun main() {
val p1 = Point(1, 2)
val p2 = Point(3, 4)
val p3 = p1 + p2
println(p3) // 输出: Point(x=4, y=6)
}