You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 15:55:15