【问题标题】:Android Studio 3.2 does not aware of JetifierAndroid Studio 3.2 不知道 Jetifier
【发布时间】:2018-10-01 01:57:41
【问题描述】:

这是 Android 应用程序中的一小段代码,在 Android Studio 3.2 上的“迁移到 AndroidX...”之后。

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

变量pageIndicatorhttps://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


    【解决方案1】:

    如果您启用了 Jetifier,但它似乎没有做任何事情,
    尝试删除 .idea/libraries 目录,然后进行 gradle 同步。
    File -> Sync Project with Gradle files

    看来如果在Android Studio已经下载了一些依赖之后才启用Jetifier,
    它不会正确检测和转换遗留依赖项。

    【讨论】:

      猜你喜欢
      • 2013-05-25
      • 1970-01-01
      • 2019-10-22
      • 1970-01-01
      • 2019-03-16
      • 1970-01-01
      • 2020-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多