Android Studio 3.2 не знает о Jetifier

Вот небольшой фрагмент кода в приложении для Android после «Перехода на AndroidX…» в Android Studio 3.2.

fun configureViewPager( pageIndicator: PageIndicator, pager: androidx.viewpager.widget.ViewPaager) { ... pageIndicator.setViewPager(pager) ... }

Переменная pageIndicator является ссылкой на PageIndicator из https://github.com/JakeWharton/ViewPagerIndicator. У него есть метод setViewPager(android.support.v4.view.ViewPager view) для подключения объекта к viewPager в макете.

С другой стороны, переменная pager — это пейджер AndroidX. Таким образом, очевидно, что существует несоответствие при передаче AndroidX androidx.viewpager.widget.ViewPaager методу android.support.v4.view.ViewPager.

Однако Jetifier Android SDK может обнаружить это и преобразовать ссылку androidx.viewpager.widget.ViewPaager в android.support.v4.view.ViewPager в библиотеке во время сборки, поэтому он успешно скомпилируется.

Проблема в том, что приведенная выше строка кода по-прежнему вызывает ошибку в редакторе кода Android Studio, и отображается подчеркивание чтения. Это ошибка (или отсутствие функции), что Android Studio не знает, что собирается делать Jetifier? Или есть какие-то настройки, чтобы он знал об этом?

Тем временем я делаю проблему немного более терпимой, создавая функцию расширения Kotlin:

fun PageIndicator.setViewPagerX(pager: ViewPager /* AndroidX's */) { setViewPager(pager) }

Затем строка кода, упомянутая выше, изменяется на

pageIndicator.setViewPagerX(pager)

так что одна и та же ошибка во всей кодовой базе возникает только один раз.

Любая идея, чтобы сделать это лучше?


person thinkpanda    schedule 01.10.2018    source источник


Ответы (1)


Если вы включили Jetifier, но он ничего не делает,
попробуйте удалить каталог .idea/libraries, а затем выполните синхронизацию Gradle.
File -> Sync Project with Gradle files

Похоже, что если Jetifier включить после того, как Android Studio уже загрузила некоторые зависимости,
он не сможет должным образом обнаружить и преобразовать устаревшие зависимости.

person Bojan Radivojevic Bomber    schedule 22.10.2018