abstract class BaseActivity2<T : ViewDataBinding> : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
var bindingName = ""
var layName = ""
javaClass.genericSuperclass?.toString()?.split(".")?.apply {
bindingName = this[this.size - 1].removeSuffix("Binding>")
bindingName.forEach {
if (Character.isUpperCase(it) && layName.isNotEmpty()) {
layName += "_"
}
layName += it.toString()
}
layName = layName.toLowerCase()
}
binding = DataBindingUtil.setContentView(
this, resources.getIdentifier(
layName, "layout",
packageName
)
)
}
lateinit var binding: T
}
// 顺便给你的 老baseactivity 几个过时注解
// @Deprecated("已过时,请使用BaseActivity")
//用法
class MyActivity : BaseActivity2<MainBinding>() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding.tab// 可直调用接用
}
}
Activity 基类 懒人必备
于 2022-06-02 10:45:27 首次发布