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

MaterialButtonToggleGroup选中状态的SharedPreferences持久化实现咨询

解决方案

要实现MaterialButtonToggleGroup的状态保存与恢复,需要分两步:先在选中按钮时把状态存入SharedPreferences,再在retrieveData中读取并恢复状态。

1. 完善选中监听的保存逻辑

在按钮选中事件里添加SharedPreferences保存代码:

view.toggleButton?.addOnButtonCheckedListener { toggleButton, checkedId, isChecked ->
    if (!isChecked) return@addOnButtonCheckedListener
    // 保存选中ID到SharedPreferences
    val sharedPref = requireContext().getSharedPreferences("ToggleState", Context.MODE_PRIVATE)
    sharedPref.edit().putInt("selectedBtnId", checkedId).apply()
    
    // 原有业务逻辑
    if (checkedId == R.id.on) {
        // do something
    }
    if (checkedId == R.id.off) {
        // do something
    }
}

2. 实现retrieveData方法

在该方法中读取保存的状态并设置给ToggleGroup:

private fun retrieveData() {
    val sharedPref = requireContext().getSharedPreferences("ToggleState", Context.MODE_PRIVATE)
    // 读取保存的ID,默认值设为布局中指定的默认选中按钮R.id.on
    val selectedBtnId = sharedPref.getInt("selectedBtnId", R.id.on)
    // 恢复选中状态
    view.toggleButton?.check(selectedBtnId)
}

补充提示

  • 建议在Dialog初始化视图完成后也调用一次retrieveData,避免仅依赖onResume(Dialog隐藏再显示时onResume不一定触发)
  • "ToggleState"是SharedPreferences的自定义文件名,可根据需求修改
  • 因布局设置了app:selectionRequired="true",无需处理无选中状态的情况

内容的提问来源于stack exchange,提问作者DJTalls

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 10:31:19