之前使用的痛点每次都要通过binding.控件(第一幅图),大量重复代码。
不能直接通过控件id使用方便,通过拓展直接使用点击控件第二幅图。
一、模版方法
abstract class BaseActivity二、使用方法: AppCompatActivity() { private lateinit var _binding: T protected val binding get() = _binding final override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) _binding = getViewBinding() setContentView(_binding.root) transparentStatusBar() with(_binding){ initView() initListener() initData() } } override fun onDestroy() { requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED super.onDestroy() } open fun T.initView() {} open fun T.initListener() {} open fun T.initData() {} override fun onLowMemory() { super.onLowMemory() } protected abstract fun getViewBinding(): T }
class MainActivity : BaseActivity() {
override fun ActivityMainBinding.initView() {
Log.e("BaseActivity", "------->initView")
btnPicture.text = "测试"
}
override fun ActivityMainBinding.initData() {
Log.e("BaseActivity", "------->initData")
}
override fun ActivityMainBinding.initListener() {
Log.e("BaseActivity", "------->initListener")
btnPicture.setOnClickListener {
Toast.makeText(this@MainActivity, "测试显示", Toast.LENGTH_SHORT).show()
}
}
override fun getViewBinding(): ActivityMainBinding {
return ActivityMainBinding.inflate(layoutInflater)
}
}



