Nedávno som vyvinul aplikáciu v spoločnosti Kotlin 1.2.10 a dostal som chybu v aplikácii Android Studio:
Call requires API level 24 (current min is 21): java.util.Map#forEach
.
S odkazom na nasledujúci kód:
val map = mutableMapOf<String, String>()
map.forEach { s1: String, s2: String -> print("something") }
Takže otázka je, ako môžem vedieť, že metódy Kotlin, ktoré používam (mimo Android Studio, napríklad IntelliJ), budú k dispozícii na určitých úrovniach rozhrania Android API?
Nemôžem nájsť informácie o tom, ktorá verzia Kotlin je Android (a na ktorej úrovni API).
odpovede:
4 pre odpoveď č. 1Akékoľvek zariadenie Kotlin je kompatibilné so systémom Android tak dlho ako vy
compile "org.jetbrains.kotlin:kotlin-stdlib" // or
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk7"
Táto metóda forEach so spätným volaním dvoch parametrov je z Java 8 a je k dispozícii iba od API 24. To je tiež dôvod, prečo pod API 24 nemôžete
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
Čo ste hľadali, je rozšírenie funkcie Kotlin, ktorá by vyzerala takto:
map.forEach { (key, value) -> // One parameter of type Map.Entry<String, String>
// Do something
}