我在Android中使用偏好设置。当我改变开关时,我放了一个 bool(boolean) 值:

val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE)

switch1.setOnCheckedChangeListener{_, isChecked ->
        if(isChecked){
            sharedPref?.let {
                with(it.edit()) {
                    putBoolean("sw1", true)
                    apply()
                }
            }
        }else{
            sharedPref?.let {
                with(it.edit()) {
                    putBoolean("sw1", false)
                    apply()
                }
            }
        }
    }

我明白了:
val sw1 = sharedPref?.getBoolean("sw1", false)
sw1?.let {
        switch1.isChecked = sw1
    }

但是我收到一个错误:

最佳答案

如果使用putInt()存储共享首选项中的数据,并且使用getBoolean()检索相同键的数据,则将发生ClassCastException。

有两种解决方法。

  • 可以清除共享的首选项数据。从设置->应用信息->您的应用->清除数据。
  • 如果需要将首选项数据类型更改为boolean,请确保在getBoolean()之前调用putBoolean()。
  • 08-05 18:59