Butterknife Обязательный вид с идентификатором для поля не найден в каждом фрагменте - PullRequest
0 голосов
/ 22 декабря 2018

Когда я пытаюсь связать свои взгляды с Butterknife, я получаю это IllegalStateException после каждого вызова ButterKnife.bind(this, fragmentView!!) метода.

Например:

//...BindView section
@BindView(R.id.logoutButton)
lateinit var logoutButton: View

@BindView(R.id.closeSession)
lateinit var closeSessionButton: View

@BindView(R.id.settings)
lateinit var settingsButton: View

И я получаю это:

java.lang.IllegalStateException: Требуется логин просмотра с идентификатором 2131362018 для выхода из поля. Кнопка не найдена.Если это представление является необязательным, добавьте аннотацию @Nullable (поля) или @Optional (методы).

Дело в том, что я не связывал представление 'login', как говорит исключение.Я ограничил «LogutButton».У меня действительно было представление «логин», но в другом фрагменте, который не имеет никакого отношения к фрагменту, где появляется исключение.

И это происходит в каждом фрагменте, действии или адаптере или чем-то еще, что требует связывания представлений с помощью butterknife.,И каждый раз, когда Butterknife пытается связать, абсолютно случайное представление для поля, которое идет первым в порядке объявления (затрагивается только первая @BindView аннотация, следующая аннотация в порядке)

Я использую аннотацию @Nullableи это помогает отлично (даже после того, как я удалил @Nullable аннотацию - фрагмент работает отлично).Но у меня есть много фрагментов и действий, поэтому я не могу проверить их все и добавить аннотацию @Nullable.

Как найти источник этой проблемы, чтобы она никогда больше не повторялась

Ответы [ 3 ]

0 голосов
/ 23 декабря 2018

Использование Butterknife в проекте kotlin бессмысленно.Kotlin уже обеспечивает прямой и легкий доступ к макету и его вид.https://kotlinlang.org/docs/tutorials/android-plugin.html

Вам следует прекратить использование ножа и вынуть эту библиотеку из gradle.

0 голосов
/ 27 июня 2019

Попробуйте добавить эту аннотацию @Nullable или @Optional.Я взял ссылку от https://github.com/JakeWharton/butterknife/issues/343

@Nullable
@BindView(R.id.tvTitle)
0 голосов
/ 23 декабря 2018

Вот как я решил это:

Сборка -> Чистый проект

И все отлично!

...