android - SharedPreferences 无法按预期保存键值
问题描述
我无法切换键值 onoff。为什么每次按钮(声音)单击时键值都没有改变?默认的onoff 值为0,on 按钮单击onoff 值应该变为1。但它不能。为什么?
private var mp: MediaPlayer? =null
var sound_onoff:Int=0
onCreat{...
mp= MediaPlayer.create(this, R.raw.key_tone)
val pref = applicationContext.getSharedPreferences("MyPref", 0)
val editor = pref.edit()
sound_onoff = pref.getInt("onoff", 0)
sound.setOnClickListener{
when(sound_onoff){
1->{sound.setText("SOUND ON")
mp?.setVolume(1F,1F)
mp!!.start()
editor.putInt("onoff", 0)
editor.apply()}
0->{sound.setText("SOUND OFF")
mp?.setVolume(0F,0F)
mp!!.start()
editor.putInt("onoff", 1)
editor.apply()}
}
}
解决方案
我建议您使用 Boolean 而不是 Int。
以及为什么您的代码不起作用。因为您sound_onoff = pref.getInt("onoff", 0)
只输入了 onCreate ,所以它只在创建类时调用一次。
您需要在需要检查时调用sound_onoff = pref.getInt("onoff", 0)
它。
试试这个:
sound.setOnClickListener{
sound_onoff = pref.getInt("onoff", 0)
when(sound_onoff){
1->{sound.setText("SOUND ON")
mp?.setVolume(1F,1F)
mp!!.start()
editor.putInt("onoff", 0)
editor.apply()}
0->{sound.setText("SOUND OFF")
mp?.setVolume(0F,0F)
mp!!.start()
editor.putInt("onoff", 1)
editor.apply()}
}
}
希望这有帮助!
推荐阅读
- pyspark - 如何在本地开发和测试 python 转换代码?
- delphi-10.3-rio - Metropolis如何设置父子窗体?
- python-3.x - 熊猫数据框整列到字符串数据类型
- exception - Typo3 缓存刷新异常 - 如何调试
- c++ - 为什么它不返回任何东西?
- python - 如何在python中发布xml
- apollo-server - 如何在 VS Code 中调试我的 typegraphql 解析器?
- flutter - 在颤动中创建具有动态页面数的页面浏览量
- node.js - 在节点红色中按下部署按钮时如何重置自定义节点功能?
- tableau-api - Tableau 聚合函数返回错误值