Исключение AnnotationTypeMismatchException в Butterknife @BindView с макетами, определенными в другой структуре папок

#java #android #android-studio #android-layout #butterknife

Вопрос:

Недавно, работая над проектом, поскольку макеты добавляли так много xml, я добавил вложенные папки в ресурсы макета, чтобы сделать проект структурированным, но после этого инъекции ButterKnife не работают. Я получаю следующую ошибку.

 @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. Если у кого-нибудь есть решение, которое было бы полезно

Комментарии:

1. какую версию вы используете butterknife ..?

2. Я использую 10.2.3

Ответ №1:

Добавьте аннотацию @Nullable перед @Bind представлением, которое может быть нулевым.

Пример: веб-сайт ButterKnife:

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

Комментарии:

1. Это не сработало, возможно, компилятор не может найти файлы xml, определенные в папках

Ответ №2:

Спасибо, что изучили это, проблема заключалась в том, что код не смог найти файлы xml из нового каталога макетов. В файле build.gradle отсутствовала правильная конфигурация папки ресурсов. Файл gradle и структура проекта выглядят следующим образом после решения

Новая структура файлов макета