ButterKnife → ViewBinding

ButterKnife → ViewBinding

老写法(Java + ButterKnife)

java 复制代码
public class MainActivity extends AppCompatActivity {

    @BindView(R.id.tv_title) TextView tvTitle;
    @BindView(R.id.btn_submit) Button btnSubmit;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);

        tvTitle.setText("Hello");
    }

    @OnClick(R.id.btn_submit)
    public void onSubmit() {
        // 处理点击
    }
}

问题在哪里

ButterKnife 已停止维护,作者 Jake Wharton 自己也不建议继续使用。依赖注解处理器,每次 build 生成大量中间代码,编译速度慢。不支持 Kotlin(虽然有 kotlin-annotation-processing,但体验很差)。

新写法(ViewBinding)

kotlin 复制代码
class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        binding.tvTitle.text = "Hello"
        binding.btnSubmit.setOnClickListener { onSubmit() }
    }
}

一句话注意

迁移重点:@BindView 声明全删掉,用 binding.tvTitle 直接访问。@OnClick 的方法体搬到 setOnClickListener lambda 里。不需要注解处理器,编译速度明显变快。

ButterKnife 的 @BindViews(多个 ID 绑定到 List)在 ViewBinding 里没有直接等价物,用单个 binding 引用解决。@BindColor / @BindDimen 之类的资源绑定用 context.resources.getColor() 等标准 API 替代。


Java Android 老项目迁移系列,持续更新中。

相关推荐
code2cat11 分钟前
Java工具篇之Maven:从pom.xml到测试通过的JAR
xml·java·maven
wuminyu7 小时前
JVM规范学习总结:解释器与JIT编译器如何处理JVM字节码
java·linux·c语言·jvm·c++
txxzjmzlh7 小时前
SpringBoot 配置⽂件
java·spring boot·spring
Wang's Blog7 小时前
Java 项目实战: 交友项目 - 搜索附近的功能概述和分析
java·开发语言·交友
骑着蜗牛撵大象3278 小时前
大模型 Agent 的沙箱护栏:gVisor 隔离、出口白名单与审计闭环
java·开发语言·jvm·安全·agent沙箱·gvisor·microvm
独泪了无痕8 小时前
Hutool之LocalDateTimeUtil:让时间间隔操作如虎添翼
java
三无少女指南9 小时前
从这里开始:Java 后端与 AI 工程的三条阅读路线
java·学习路线·ai工程
香蕉大香蕉(06敬畏市场)9 小时前
MySQL 单点详解(07)
java·数据库·mysql·ai·博客·八股
nice_lcj52010 小时前
深入理解 Java 反射:从 Class 对象到方法调用(含性能实测 + 迷你 IOC 实战 + 面试考点)
java·开发语言·后端·面试
骑着蜗牛撵大象32710 小时前
2026 后端 AI 工程化:Spring AI 管调用、MCP 管工具、Agent 内嵌管自治
java·人工智能·后端·spring·ai·可观测性·mcp