PHP
·
发表于 5年以前
·
阅读量:8073
fun AppCompatActivity.setupActionBar(@IdRes toolbarId: Int, action: ActionBar.() -> Unit) {
val toolbar = findViewById<Toolbar>(toolbarId)
setSupportActionBar(toolbar)
supportActionBar?.run {
//执行参数中的函数,这样用户在调用该方法的时候更加灵活
action()
}
toolbar.setNavigationOnClickListener {
Log.d("AppCompatActivity", "finish")
finish()
}
}
//------------------------分割线-----------------------------
//类似的单方法接口现在只需要写一个闭包就行了
binding.aliPayIcon.setOnClickListener {
Log.d("example", it.contentDescription.toString())
}
//扩展函数let,只有在对象不为空的时候会调用,相当于做了判空
binding.let {
it.setLifecycleOwner(this@WithdrawActivity)
it.viewModel = vm
}
//扩展函数apply, 在闭包内可直接调用对象的方法属性,有个好处就是可以直接操作对象不需要先生成变量
vm.accountName.apply {
this.value = "aaaa"
Log.d("example", this.value?.toString() + ":" + this.hashCode())
}
//还有其他基础扩展函数run, with, also等等,可以看看这篇博客的介绍:https://www.jianshu.com/p/28ce69d58fea