已知参数化Fragment的ViewBinding用法,如何实现参数化AppCompatActivity?
参数化Activity的ViewBinding实现方案
可以通过抽象基类封装ViewBinding的通用初始化逻辑,让子类只需指定对应的Binding类型,就能像参数化Fragment那样便捷使用ViewBinding,具体实现如下:
1. 定义抽象基类Activity
abstract class BaseBindingActivity<VB : ViewBinding> : AppCompatActivity() { protected lateinit var binding: VB override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = getViewBinding() setContentView(binding.root) initView() } // 子类需实现此方法,返回对应布局的ViewBinding实例 protected abstract fun getViewBinding(): VB // 子类重写此方法做视图初始化逻辑 protected abstract fun initView() }
2. 子类Activity的具体实现
以MainActivity为例,只需继承基类并指定对应的ActivityMainBinding类型,实现抽象方法即可:
class MainActivity : BaseBindingActivity<ActivityMainBinding>() { override fun getViewBinding(): ActivityMainBinding { // 传入LayoutInflater生成Binding实例 return ActivityMainBinding.inflate(layoutInflater) } override fun initView() { // 直接使用binding操作视图,无需手动findViewById binding.tvWelcome.text = "这是参数化Activity的ViewBinding用法示例" binding.btnSubmit.setOnClickListener { // 处理点击事件 } } }
这种方式和你熟悉的参数化Fragment用法逻辑一致,将重复的ViewBinding初始化逻辑封装在基类中,子类仅需关注自身的业务视图操作,避免了重复代码,同时保持了代码的简洁性。
内容的提问来源于stack exchange,提问作者Shubham Kumar
相关产品推荐
相关产品推荐

