SharedPreferences не удалось сохранить значение ключа как предполагалось - PullRequest
0 голосов
/ 17 апреля 2020

Я не мог переключить значение ключа 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()}
            }
        }

1 Ответ

2 голосов
/ 17 апреля 2020

Я предлагаю вам использовать 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()}
            }
        }

Надеюсь, эта помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...