【发布时间】:2018-10-01 01:57:41
【问题描述】:
这是 Android 应用程序中的一小段代码,在 Android Studio 3.2 上的“迁移到 AndroidX...”之后。
fun configureViewPager(
pageIndicator: PageIndicator,
pager: androidx.viewpager.widget.ViewPaager) {
...
pageIndicator.setViewPager(pager)
...
}
变量pageIndicator 是https://github.com/JakeWharton/ViewPagerIndicator 的PageIndicator 的引用。它有一个方法setViewPager(android.support.v4.view.ViewPager view) 将对象连接到布局中的viewPager。
另一方面,变量pager 是AndroidX 的视图寻呼机。所以很明显,将AndroidX的androidx.viewpager.widget.ViewPaager传递给android.support.v4.view.ViewPager的方法是不匹配的。
但是 Android SDK 的 Jetifier 可以检测到这一点,并在构建时将库中的 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)
这样整个代码库中的相同错误只会出现一次。
有什么办法让它变得更好吗?
【问题讨论】:
标签: android android-studio kotlin android-viewpager androidx