Android 使用首选项时,整数不能转换为布尔值

Android 使用首选项时,整数不能转换为布尔值,android,kotlin,Android,Kotlin,我在Android中使用首选项。当我更改开关时,我放置一个布尔值: val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) switch1.setOnCheckedChangeListener{_, isChecked -> if(isChecked){ sharedPref?.let { with(it.edit()) {

我在Android中使用首选项。当我更改开关时,我放置一个布尔值:

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
    }
但我收到一个错误:

java.lang.ClassCastException:无法将java.lang.Integer转换为 java.lang.Boolean


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

它可以通过两种方式解决

  • 可以清除共享首选项数据。从设置->应用信息->您的应用->清除数据

  • 如果需要将首选项数据类型更改为boolean,请确保在getBoolean()之前调用putBoolean()


  • 试试这个
    switch1.isChecked=sharedPref?.getBoolean(“sw1”,false)
    val sw1:Boolean=sharedPref?.getBoolean(“sw1”,false)你也可以试试这个你以前用过putInt吗?谢谢!!我试过两种方法,但都不行working@BharathKumar如果我使用putInt()就可以了