如何解决 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
示例。
所以我的项目正在将 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
示例。