如何解决 Kotlin 上的 PagerAdapter 问题:"Required method instantiateItem was not overridden"?

How to solve issue with PagerAdapter on Kotlin: "Required method instantiateItem was not overridden"?

所以我的项目正在将 Kotlin 文件调用到 Java :

这是错误消息(运行 时间错误)我得到:
java.lang.UnsupportedOperationException: Required method instantiateItem was not overridden



这是我的 app gradle

apply plugin: 'kotlin-android'
android {
    compileSdkVersion 26
....
    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }
}

dependencies {
....
    implementation "org.jetbrains.kotlin:kotlin-stdlib"
}

我的项目gradle看起来:

buildscript {
    ext.kotlin_version = '1.2.61'
    repositories {
...

}
dependencies {
....
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

    }
}






最后,这是我的 kotlin 代码,

class SwipeAdapter : PagerAdapter {
....
...
    override fun instantiateItem(container: ViewGroup?, position: Int):Any {
      .....
     ....
        return super.instantiateItem(container, position)
    }

    .....
}

(我试图将其更改为 java.lang.Object 但当然会出现编译错误, 对于 Kotlin,它必须是 Any 类型)

调用了 java 文件:

PagerAdapter sa= new SwipeAdapter(someArgs);

您遇到异常是因为您仍在将工作委托给 super 调用,然后调用此实现:

@Deprecated
@NonNull
public Object instantiateItem(@NonNull View container, int position) {
    throw new UnsupportedOperationException(
            "Required method instantiateItem was not overridden");
}

您不应调用 super 方法,而应 return 您创建的对象代表给定位置的页面。这通常是 View 本身,请参阅 this question or this tutorial 以获取 PagerAdapter 示例。