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
相关产品推荐
相关产品推荐

