是否从SharedPreferences设置和获取StringSet?

本教程将介绍是否从SharedPreferences设置和获取StringSet?的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

是否从SharedPreferences设置和获取StringSet? 教程 第1张

问题描述

我正在构建一个Android应用程序。我要在首选项中存储一组字符串,以便根据其登录信息跟踪使用该应用程序的用户。

我不想使用数据库,所以我知道我应该使用SharedPreferences来存储登录的人员列表。我希望能够重置此列表,因此不能将单个登录数据保留为String而不是StringSets。使用单个字符串意味着我必须保留这些字符串的另一个列表,以便我可以在需要时清理它们。字符串集更易于维护。

以下是我到目前为止所做的工作:

 //this is my preferences variable
 SharedPreferences prefs = getSharedPreferences("packageName", MODE_PRIVATE);

 //I create a StringSet then add elements to it
 Set<String> set = new HashSet<String>();
 
 set.add("test 1");
 set.add("test 2");
 set.add("test 3");

 //I edit the prefs and add my string set and label it as "List"
 prefs.edit().putStringSet("List", set);

 //I commit the edit I made
 prefs.edit().commit();

 //I create another Set, then I fetch List from my prefs file
 Set<String> fetch = prefs.getStringSet("List", null);

 //I then convert it to an Array List and try to see if I got the values 
 List<String> list = new ArrayList<String>(fetch);

 for(int i = 0 ; i < list.size() ; i++){
  Log.d("fetching values", "fetch value " + list.get(i));
 }

但是,事实证明Set<String> fetch为NULL,并且我有一个NULL指针异常,这可能是因为我没有正确存储或提取我的StringSet。

推荐答案

先创建编辑器对象:

SharedPreferences.Editor editor = prefs.edit();

并使用编辑器对象存储和获取字符串集,如下所示:

editor.putStringSet("List", set);
editor.apply();

Set<String> fetch = editor.getStringSet("List", null);

好了关于是否从SharedPreferences设置和获取StringSet?的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。