Как решить проблему с PagerAdapter на Kotlin: "Обязательный метод instantiateItem не был переопределен"?
Поэтому мой проект вызывает файл Kotlin для Java:
Это сообщение об ошибке (Run Time Error) я получил: 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"
}
}
и наконец, это мой код Котлин,
class SwipeAdapter : PagerAdapter {
....
...
override fun instantiateItem(container: ViewGroup?, position: Int):Any {
.....
....
return super.instantiateItem(container, position)
}
.....
}
(Я пытался изменить его на java.lang.Object, но, конечно, получил ошибку компиляции, это должен быть тип Any для Kotlin)
вызывается на Java- файл:
PagerAdapter sa= new SwipeAdapter(someArgs);
1 ответ
Решение
Вы получаете исключение, потому что вы все еще делегируете работу super
вызов, который затем вызывает в этой реализации:
@Deprecated
@NonNull
public Object instantiateItem(@NonNull View container, int position) {
throw new UnsupportedOperationException(
"Required method instantiateItem was not overridden");
}
Вместо вызова super
метод, вы должны вернуть созданный вами объект, который представляет страницу в данной позиции. Обычно это View
сам, посмотрите этот вопрос или этот учебник для PagerAdapter
Примеры.