所以我的项目正在将 Kotlin 文件调用到 Java :
这是我收到的错误消息(运行时错误):
java.lang.UnsupportedOperationException:未覆盖必需的方法 instantiateItem
这是我的应用程序 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);
最佳答案
您收到异常是因为您仍然将工作委托(delegate)给 super
调用,然后该调用会调用此实现:
@Deprecated
@NonNull
public Object instantiateItem(@NonNull View container, int position) {
throw new UnsupportedOperationException(
"Required method instantiateItem was not overridden");
}
您应该返回一个您创建的代表给定位置页面的对象,而不是调用 super
方法。这通常是 View
本身,请参阅 this question或this tutorial对于 PagerAdapter
示例。
关于android - 如何解决 Kotlin 上的 PagerAdapter 问题 : "Required method instantiateItem was not overridden"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52045177/