Вот небольшой фрагмент кода в приложении для 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)
так что одна и та же ошибка во всей кодовой базе возникает только один раз.
Любая идея, чтобы сделать это лучше?