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

从Kotlin Synthetic迁移到ViewBinding:AddOrderActivity代码修改方案

针对AddOrderActivity.kt的ViewBinding迁移完整修改步骤

1. 声明ViewBinding实例变量

在AddOrderActivity类内部、onCreate方法之前,添加ViewBinding的延迟初始化变量:

private lateinit var binding: ActivityAddOrderBinding

注意:ActivityAddOrderBinding是根据布局文件名自动生成的——如果你的布局文件是activity_add_order.xml,生成的Binding类名就是驼峰式的ActivityAddOrderBinding,布局名不同请对应修改。

2. 修改onCreate方法初始化Binding

替换原来的setContentView代码,改为初始化Binding并设置根视图:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    // 替换原 setContentView(R.layout.activity_add_order) 代码
    binding = ActivityAddOrderBinding.inflate(layoutInflater)
    setContentView(binding.root)
    
    // 原有初始化逻辑(如RecyclerView适配器设置、按钮点击事件等)可保留,但控件引用需修改
}

3. 替换所有控件引用

将原来直接用控件ID调用的代码,全部改为通过binding.控件ID的方式访问,举几个常见示例:

  • 原rv_list.adapter = orderAdapter → 修改为 binding.rv_list.adapter = orderAdapter
  • 原btn_submit.setOnClickListener { ... } → 修改为 binding.btn_submit.setOnClickListener { ... }
  • 原tv_order_title.text = "新增订单" → 修改为 binding.tv_order_title.text = "新增订单"
    所有之前用Kotlin Synthetic直接引用的控件,都要加上binding.前缀

额外注意事项

  • 如果布局里有<include>标签,要确保被包含的布局也启用了ViewBinding,访问子控件时需用binding.include布局ID.子控件ID的格式
  • 确认已经彻底删除所有Kotlin Synthetic相关的导入语句(比如import kotlinx.android.synthetic.main.activity_add_order.*)

内容的提问来源于stack exchange,提问作者Mck

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 23:46:05