它说错误的第二个参数类型需要设置字符串。
Set<Integer> hs = pref.getStringSet("set", new HashSet<Integer>());
hs.add(String.valueOf(hs.size()+1));
SharedPreferences.Editor edit = pref.edit();
edit.putStringSet("set", hs);
edit.commit();
答案 0 :(得分:1)
您可以进行转换并将其存储在SharedPreferences
中,如下所示
SharedPreferences preferences = context.getSharedPreferences("preferences", Context.MODE_PRIVATE);
Set<Integer> integerHashSet = new HashSet<>();
integerHashSet.add(1);
integerHashSet.add(2);
//convert String HashSet to Integer HashSet
Set<String> stringHashSet = new HashSet<>();
for (Integer i : integerHashSet) {
stringHashSet.add(String.valueOf(i));
}
preferences.edit().putStringSet("set", stringHashSet).commit();
Set<String> stringSet = preferences.getStringSet("set", new HashSet<String>());
Set<Integer> integerSet = new HashSet<>();
//Convert it back
for (String str : stringSet) {
integerSet.add(Integer.parseInt(str));
}
//now user integerSet
答案 1 :(得分:0)
使用Gson
implementation 'com.google.code.gson:gson:2.8.5'
Gson帮助将自定义对象转换为字符串&amp;字符串到自定义对象。 所以你可以将set转换为字符串保存到共享的pref。然后从共享pref获取字符串并转换为set。
保存
Set<Integer> mySet = new HashSet<>();
String json = new Gson().toJson(mySet);
//Save json to shared pref
然后检索
//get json from shared preference saved earlier
Set<Integer> mySet2 = new Gson().fromJson(json, new TypeToken<Set<Integer>>() {
}.getType());
答案 2 :(得分:0)
它说错误的第二个参数类型需要设置字符串。
这是因为您使用以下代码错误地使用了getStringSet:
Set<Integer> hs = pref.getStringSet("set", new HashSet<Integer>());
它应该是这样的:
Set<String> hs = pref.getStringSet("set", new HashSet<String>());
您应该识别方法签名,该签名明确告诉该方法为您提供了getStringSet
的字符串集。