我刚注意到这个lint错误:
调用需要API级别24(当前最小值为19)java.util.map#foreach
当我在Kotlin的MutableMap上使用扩展函数forEach时。 当我写这条线时没有发生这种情况,但现在就在那里。 我在其他机器上没有看到这个错误。
答案 0 :(得分:33)
您使用的不是kotlin.collections.MutableMap.forEach
。
您使用的内容似乎是Java 8中的Map.forEach
。
阅读这篇文章: http://blog.danlew.net/2017/03/16/kotlin-puzzler-whose-line-is-it-anyways/
这似乎是一个常见的错误。
从Android API级别24开始,Java 8得到了很好的支持。
简而言之,请勿使用map.forEach { t, u -> Log.i("tag", t + u) }
之类的内容
像map.forEach { (t, u) -> Log.i("tag", t + u) }
一样使用。
(不是两个参数。只有一个参数是一对。)
答案 1 :(得分:2)
这也会发生在列表中,即使我正在使用我需要使用:
list.iterator().forEach {}
关键是在 forEach 之前使用 iterator()
。
答案 2 :(得分:0)
Java 8支持Map.forEach,Android的支持从API 24开始