SharedPreferences无法按预期保存键值

问题描述 投票:-2回答:1

我无法切换onoff的键值。为什么键值在每个按钮(声音)单击时都没有改变?默认的onoff值为0,单击按钮时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()}
            }
        }

android kotlin sharedpreferences
1个回答
2
投票

我建议您使用布尔值而不是整数。

以及为什么您的代码不起作用。因为您仅将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()}
            }
        }

希望获得帮助!

© www.soinside.com 2019 - 2024. All rights reserved.