Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么HashSet不能强制转换为java.lang.String?在Android中将save arraylist转换为SharedReferences时发生了这种情况?_Android_Sharedpreferences - Fatal编程技术网

为什么HashSet不能强制转换为java.lang.String?在Android中将save arraylist转换为SharedReferences时发生了这种情况?

为什么HashSet不能强制转换为java.lang.String?在Android中将save arraylist转换为SharedReferences时发生了这种情况?,android,sharedpreferences,Android,Sharedpreferences,我尝试使用以下代码将ArrayList设置为/fromSharedReferences。但是当我调用getSharedReferencesMutableList时,它显示以下错误: Caused by java.lang.ClassCastException java.util.HashSet cannot be cast to java.lang.String com.bbin.authenticator.Support.sharedPreference.SharedPreferenceHel

我尝试使用以下代码将ArrayList设置为/from
SharedReferences
。但是当我调用
getSharedReferencesMutableList
时,它显示以下错误:

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>()
    }
}
fun setSharedPreferencesTableList(上下文:上下文,setName:String,值:ArrayList){
var gson=gson()
var json=gson.toJson(值)
val设置=context.getSharedReferences(UBAuth,context.MODE\u PRIVATE)
setting.edit().putString(setName,json).apply()
}
有趣的GetSharedReferencesMutableList(上下文:context,getName:String):ArrayList{
val设置=context.getSharedReferences(UBAuth,context.MODE\u PRIVATE)
var json=setting.getString(getName,“”)
var type=object:TypeToken(){}.type
var list=Gson().fromJson(json,类型)
如果(列表!=null){
返回列表
}否则{
返回ArrayList()
}
}
我没有为调用
setSharedPreferencesTableList
将任何内容设置为
SharedReferences
。因此,该值为空

为什么会出现这种错误?
我遗漏了什么吗?

原因是您有一个非字符串键的共享首选项

表示在这种情况下会抛出一个
ClassCastException

请参见