Butterknife @BindView 中的 AnnotationTypeMismatchException,布局在另一个文件夹结构中定义

Posted

技术标签:

【中文标题】Butterknife @BindView 中的 AnnotationTypeMismatchException,布局在另一个文件夹结构中定义【英文标题】:AnnotationTypeMismatchException in Butterknife @BindView with layouts defined in another folder structure 【发布时间】:2021-12-14 08:16:14 【问题描述】:

最近在做一个项目时,由于布局添加了这么多 xml,我在布局资源中添加了子文件夹以使项目结构化,但之后 ButterKnife Injections 不起作用。我收到以下错误。

@BindView(R.id.tb_tvcoinsMainCommon) TextView tvCoins;
                     ^
  
java.lang.annotation.AnnotationTypeMismatchException: Incorrectly typed data found for annotation element public abstract int butterknife.BindView.value() (Found data of type <any>)

findViewById() 没有给出任何问题,只有 ButterKnife Bindings 给出了问题。如果有人有有用的解决方案

【问题讨论】:

你用的是哪个版本的butterknife..? 我使用的是 10.2.3 【参考方案1】:

在可能为空的视图的@Bind 之前添加注释@Nullable

示例:ButterKnife Website:

@Nullable @BindView(R.id.tb_tvcoinsMainCommon) TextView tvCoins;

【讨论】:

这不起作用,可能是编译器找不到文件夹中定义的xml文件【参考方案2】:

感谢您对此进行调查,问题是代码无法从新布局目录中找到 xml 文件。 build.gradle 文件缺少正确的资源文件夹配置。解决后的gradle文件和项目结构是这样的

【讨论】:

以上是关于Butterknife @BindView 中的 AnnotationTypeMismatchException,布局在另一个文件夹结构中定义的主要内容,如果未能解决你的问题,请参考以下文章

Bindview 在 Eclipse 中不起作用

手动实现bindview

ButterKnife省略findViewById的原理

Android使用AnnotationProcessor模仿ButterKnife

Android 编译时注解-提升

Android自定义processor实现bindView功能