Использование sharedPreferences

148
14 октября 2017, 17:22

есть приложение под android, в нем класс Sharedpref

class Sharedpref private constructor(context: Context) : AppCompatActivity() {
    private val sharedPreferences: SharedPreferences = context.getSharedPreferences("main", Context.MODE_PRIVATE)
    fun getToken (): Boolean = sharedPreferences.getBoolean("USER_TOKEN_KEY", false)
    fun saveToken(token: Boolean) {
        sharedPreferences.edit().putBoolean("USER_TOKEN_KEY", token).apply()
    }
    fun prefClear() {
        sharedPreferences.edit().clear().apply()
    }
    fun saveName(name: String, value: String) {
        sharedPreferences.edit().putString(name, value).apply()
    }
    fun getName(name: String, value: String): String? = sharedPreferences.getString(name, value)
    companion object {
        private var INSTANCE: Sharedpref? = null
        fun getInstance(context: Context): Sharedpref {
            if (INSTANCE == null) {
                synchronized(Sharedpref::class.java) {
                    if (INSTANCE == null) {
                        INSTANCE = Sharedpref(context)
                    }
                }
            }
            return INSTANCE!!
        }
    }
}

и вызов метода в активити

private fun triggers() {
    val pref = Sharedpref.getInstance(baseContext)
    if (pref.getToken()) {
        textView!!.text = "Приложите телефон к метке"
    } else {
        textView!!.text = "Пожалуйста, выполните вход"
    }
}

падает с ошибкой Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean с указанием на строчки

fun getToken (): Boolean = sharedPreferences.getBoolean("USER_TOKEN_KEY", false)

и

 if (pref.getToken()) {
Answer 1

Убедитесь, что у вас в коде нигде не происходит записи строки по этому ключу.

Сейчас то у вас коде сохранение/чтение как bool, да. Но, вполне вероятно, во время тестов вы по этому ключу записали строку.

READ ALSO
Как создать “базу данных”? [требует правки]

Как создать “базу данных”? [требует правки]

Новичок, только начал изучать JavaОбъясните, пожалуйста, как создают базы данных в Java

192
Production для front-end и backend сервисов

Production для front-end и backend сервисов

Я разрабатываю приложение, которые имеет два отдельных сервисаОдин из них -> create-react-app, который воспроизводится на порте 3000, другой spring boot rest API service,...

153
Что такое спецификация и реализация для Java?

Что такое спецификация и реализация для Java?

Смотрю вебинар и там как то прошелся по теме Java спецификация и JDK реализацияМожно ли в доходчивом языке описать со структурой что это и как...

183
Производительность JNI: правда или миф?

Производительность JNI: правда или миф?

С учебы мне говорят то, что JNI это c++И по скорости выполнения он превосходит Java

212