尝试从片段活动更新共享首选项

时间:2017-08-21 03:17:47

标签: java android android-fragments android-fragmentactivity

我正在为我的应用构建自定义铃声选择器。该类称为SoundPicker,它扩展为FragmentActivity。我要做的是将选定的铃声保存到我的应用程序的设置文件中。

这是我的代码:

String selectedResource = "blablabla";
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
SharedPreferences.Editor editor = sharedPref.edit();
editor.putStringSet("notifications_new_message", selectedResource);
editor.commit();

问题是我收到错误,引用我想要设置的新字符串 - selectedResource

这是我得到的错误:

  

错误的第二个参数类型。找到:'java.lang.String',必需:   'java.util.Set'

     

putStringSet(String,java.util.Set)in   编辑器不能应用于(String,java.lang.String)

我在这里做错了什么?谢谢!

2 个答案:

答案 0 :(得分:4)

请注意,putString和putStringSet是不同的方法, 所以请改用putString

  

editor.putString(“notifications_new_message”,selectedResource);

答案 1 :(得分:2)

您正在尝试设置字符串,但putStringSet接受类型为set 的第二个参数

  

使用putString存储字符串值或创建字符串集并使用putStringSet

//To store string value
String selectedResource = "blablabla";
SharedPreferences sharedPref = 
PreferenceManager.getDefaultSharedPreferences(getBaseContext());
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("notifications_new_message", selectedResource);
editor.commit();



//To Store string set
Set<String> hs = ss.getStringSet("set", new HashSet<String>());

String selectedResource = "blablabla";

hs.add(selectedResource);

SharedPreferences sharedPref =         
PreferenceManager.getDefaultSharedPreferences(getBaseContext());
SharedPreferences.Editor editor = sharedPref.edit();
editor.putStringSet("notifications_new_message", hs);
editor.commit();