Почему HashSet не может быть приведен к java.lang. Строка произошла в списке сохранения в SharedPreferences в Android? - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь использовать следующий код для установки и получения ArrayList в / из SharedPreferences. Но он показывает следующую ошибку, когда я звоню getSharedPreferencesMutableList:

Caused by java.lang.ClassCastException
java.util.HashSet cannot be cast to java.lang.String
com.bbin.authenticator.Support.sharedPreference.SharedPreferenceHelper.getSharedPreferencesMutableList

Код выглядит следующим образом:

fun setSharedPreferencesMutableList(context: Context, setName: String, value: ArrayList<String>) {
    var gson = Gson()
    var json = gson.toJson(value)

    val setting = context.getSharedPreferences(UBAuth, Context.MODE_PRIVATE)
    setting.edit().putString(setName, json).apply()

}

fun getSharedPreferencesMutableList(context: Context, getName: String): ArrayList<String> {
    val setting = context.getSharedPreferences(UBAuth, Context.MODE_PRIVATE)
    var json = setting.getString(getName,"")
    var type = object : TypeToken<List<String>>() {}.type
    var list = Gson().fromJson<ArrayList<String>>(json, type)

    if(list != null){
        return list
    }else{
        return ArrayList<String>()
    }
}

Я не установил ничего на SharedPreferences для вызова setSharedPreferencesMutableList. Таким образом, значение пусто.

Почему это показывает эту ошибку? Я что-то упустил?

1 Ответ

2 голосов
/ 23 мая 2019

причина в том, что у вас есть общие настройки с ключом, который не является строкой.

В документации говорится, что в этом случае выбрасывается ClassCastException

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