Как решить проблему с PagerAdapter на Kotlin: «Обязательный метод instantiateItem не был переопределен»? - PullRequest
0 голосов
/ 27 августа 2018

Итак, мой проект вызывает файл 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, но, конечно, получил ошибку компиляции, это должен быть тип Any для Kotlin)

вызвано java файл:

PagerAdapter sa= new SwipeAdapter(someArgs);

1 Ответ

0 голосов
/ 27 августа 2018

Вы получаете исключение, потому что вы все еще делегируете работу вызову super, который затем вызывает эту реализацию:

@Deprecated
@NonNull
public Object instantiateItem(@NonNull View container, int position) {
    throw new UnsupportedOperationException(
            "Required method instantiateItem was not overridden");
}

Вместо вызова метода super вы должны вернуть созданный вами объект, который представляет страницу в заданной позиции. Обычно это View, см. этот вопрос или этот учебник для PagerAdapter примеров.

...