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

使用ButterKnife绑定TextView后调用setText报空对象引用错误如何解决

问题原因
  • 注解处理器未正确配置:ButterKnife依赖注解处理器生成视图绑定代码,如果只引入了ButterKnife核心库,没有添加对应的注解处理器依赖,绑定逻辑不会执行,View自然为空。
  • 布局匹配问题:需要确认new_login_activity.xml(包括不同屏幕适配、横竖屏等目录下的同名布局文件)中确实存在id为txt_terms的TextView,如果该控件放在了include引入的子布局,或者同名适配布局中遗漏了该控件,也会导致绑定失败。
  • 混淆规则缺失:如果项目开启了代码混淆,没有添加ButterKnife对应的混淆规则,会导致生成的绑定类被混淆或删除,绑定逻辑失效。
  • 你当前的代码绑定时机是在setContentView之后,时机符合要求,该问题可以排除。
解决办法
  1. 补全依赖配置
    打开模块级build.gradle文件,确保同时引入了核心库和注解处理器,以常用的10.2.3版本为例:
dependencies {
    implementation 'com.jakewharton:butterknife:10.2.3'
    // Java项目用annotationProcessor
    annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3'
    // 如果是Kotlin项目,替换上面的annotationProcessor为kapt,且文件顶部添加apply plugin: 'kotlin-kapt'
}
  1. 添加混淆规则
    在项目的proguard-rules.pro文件中添加如下规则,避免绑定逻辑被混淆:
-keep public class * implements butterknife.Unbinder { public <init>(**, android.view.View); }
-keep class butterknife.*
-keepclasseswithmembernames class * { @butterknife.* <methods>; }
-keepclasseswithmembernames class * { @butterknife.* <fields>; }
  1. 校验布局完整性
    检查所有new_login_activity.xml相关的布局文件,确认每个版本的布局中都存在id为@+id/txt_terms的TextView,没有拼写错误或者遗漏。
  2. 重新编译项目
    配置修改完成后,执行Build → Clean Project再执行Build → Rebuild Project,重新生成绑定代码后再运行测试即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 05:18:05