所以我的项目正在将Kotlin文件调用为Java:
这是我收到的错误消息(运行时错误):
java.lang.UnsupportedOperationException: Required method instantiateItem was not overridden
这是我的应用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,必须为“任意”类型。
在 java 文件上调用:
PagerAdapter sa= new SwipeAdapter(someArgs);
答案 0 :(得分:2)
您将收到异常,因为您仍将工作委托给super
调用,然后调用此实现:
@Deprecated
@NonNull
public Object instantiateItem(@NonNull View container, int position) {
throw new UnsupportedOperationException(
"Required method instantiateItem was not overridden");
}
您应该返回创建的对象来表示给定位置的页面,而不是调用super
方法。通常是View
本身,有关PagerAdapter
的示例,请参见this question或this tutorial。