Как решить проблему с 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 Примеры.

Другие вопросы по тегам