概述
Kotlin 同 C# 与 Gosu 类似,能够扩展一个类的新功能而无需继承该类或使用像装饰者这样的任何类型的设计模式。 这通过叫做 扩展 的特殊声明完成。Kotlin 支持 扩展函数 与 扩展属性。
Activity添加扩展函数
/**
* The `fragment` is added to the container view with id `frameId`. The operation is
* performed by the `fragmentManager`.
*/
fun AppCompatActivity.replaceFragmentInActivity(fragment: Fragment, frameId: Int) {
supportFragmentManager.transact {
replace(frameId, fragment)
}
}
/**
* The `fragment` is added to the container view with tag. The operation is
* performed by the `fragmentManager`.
*/
fun AppCompatActivity.addFragmentToActivity(fragment: Fragment, tag: String?=null) {
supportFragmentManager.transact {
add(fragment, tag)
}
}
fun AppCompatActivity.addFragmentToActivity(@IdRes containerViewId: Int, fragment: Fragment){
supportFragmentManager.transact {
add(containerViewId, fragment)
}
}
fun AppCompatActivity.setupActionBar(@IdRes toolbarId: Int, action: ActionBar.() -> Unit) {
setSupportActionBar(findViewById(toolbarId))
supportActionBar?.run {
action()
}
}
fun <T : ViewDataBinding> AppCompatActivity.bindingContentView(@LayoutRes layoutId: Int): T {
return DataBindingUtil.setContentView(this, layoutId)
}
fun <T : ViewModel> AppCompatActivity.obtainViewModel(viewModelClass: Class<T>) =
ViewModelProviders.of(this).get(viewModelClass)
复制代码
使用扩展
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
bindingContentView(R.layout.activity_main)
}
复制代码
转载于:https://juejin.im/post/5c4fb4f0e51d4535f0191949
最后
以上就是温暖雪糕为你收集整理的Activity添加扩展的全部内容,希望文章能够帮你解决Activity添加扩展所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复