Android SDK23下如何重置mutableStateMap所有值为默认值?
解决MutableStateMap在低SDK版本下使用replaceAll/forEach的问题
替代replaceAll的实现
你可以手动遍历mutableStateMap的所有键,逐个将值设为false,完全避开需要SDK24的Java 8 Map方法:
fun uncheckAllCheckboxes(success: Boolean) { if (success) { // 用Kotlin标准库的forEach遍历键,不依赖SDK24 mapOfBoxToCheckedState.keys.forEach { key -> mapOfBoxToCheckedState[key] = false } } }
或者用传统的for循环,效果一致:
fun uncheckAllCheckboxes(success: Boolean) { if (success) { val keys = ArrayList(mapOfBoxToCheckedState.keys) for (key in keys) { mapOfBoxToCheckedState[key] = false } } }
解决forEach的SDK版本限制
如果你之前调用的是Java 8原生的Map.forEach(BiConsumer)方法(会触发SDK24要求),直接换成Kotlin标准库的forEach扩展函数即可,写法类似但无系统API版本依赖:
// 原写法(依赖SDK24) // mapOfBoxToCheckedState.forEach { k, v -> /* 逻辑 */ } // 替换后的Kotlin写法(无版本限制) mapOfBoxToCheckedState.forEach { (key, value) -> // 你的业务逻辑 }
补充说明
Java 8为Map接口新增的replaceAll、forEach等方法仅在Android SDK24及以上可用,但Kotlin标准库提供了同名的扩展实现,这些函数完全基于Kotlin自身逻辑,不依赖Android系统的API版本,因此可以安全用于低版本遗留项目中。
内容的提问来源于stack exchange,提问作者Murphler
相关产品推荐
相关产品推荐

