You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已知参数化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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 03:52:07