将ButterKnife替换为ViewBinding时出现NoSuchFieldError错误求助
解决SearchActivity的NoSuchFieldError问题
问题根源很明确:你已经改用ViewBinding,但仍保留了ButterKnife.bind(this)语句,ButterKnife会在运行时尝试绑定之前用@BindView注解标记的View字段——哪怕你已经删除了这些字段,旧的编译缓存或生成的绑定类还会试图查找已移除的mUserLoggedView。
解决步骤:
- 立即删除
ButterKnife.bind(this)语句:既然已经切换到ViewBinding,完全不需要再调用ButterKnife的绑定方法,这是导致错误的直接原因。 - 彻底清理ButterKnife相关注解:检查SearchActivity中所有
@BindView、@OnClick等ButterKnife注解,确保全部删除,没有遗漏。 - 清理编译缓存并重建项目:
- 在Android Studio中点击
Build->Clean Project - 再点击
Build->Rebuild Project
这一步会清除旧的编译产物(包括ButterKnife自动生成的绑定类),避免缓存中的旧代码干扰。
- 在Android Studio中点击
- 额外检查:确认布局文件中是否还有
mUserLoggedView对应的id,以及项目中其他类是否存在反射引用该字段的代码(不过这种情况概率极低)。
按照以上步骤操作后,错误应该就能解决。
内容的提问来源于stack exchange,提问作者Lubron
相关产品推荐
相关产品推荐

