Kotlin中SharedPreferences更新值无法持久化,重启后恢复初始值求助
你的问题出在每次启动应用都会强制将numbers的值设为1,不管之前有没有更新过。代码里的editor.putInt("numbers",1).apply()是在Activity初始化阶段执行的,每次打开应用都会执行这行代码,覆盖掉之前保存的2,所以重启后值会回到1。
修正方案
只在numbers这个key不存在的时候才设置初始值1,否则直接读取已保存的值:
val sharedPreferences = getSharedPreferences("Files", Context.MODE_PRIVATE) val editor = sharedPreferences.edit() // 仅当key不存在时设置初始值 if (!sharedPreferences.contains("numbers")) { editor.putInt("numbers", 1).apply() } val textview = findViewById<TextView>(R.id.textview) textview.text = sharedPreferences.getInt("numbers", 0).toString() val button = findViewById<Button>(R.id.button) button.setOnClickListener { editor.putInt("numbers", 2).apply() textview.text = sharedPreferences.getInt("numbers", 0).toString() }
关键说明
- 使用
sharedPreferences.contains("numbers")判断该键是否已存在,避免每次启动都覆盖原有值 - 初始值设置逻辑只执行一次,后续启动会直接读取之前保存的数值,这样更新后的值就能持久保存了
内容的提问来源于stack exchange,提问作者Theprogrammingnoob
相关产品推荐
相关产品推荐

