2017-08-21 87 views
0

我正在爲我的應用程序構建自定義鈴聲選擇器。該課程名爲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)

我在這做錯了什麼?謝謝!

回答

4

請注意,putString和putStringSet是不同方法, 所以使用putString代替

editor.putString( 「notifications_new_message」,selectedResource);

+0

如何我沒注意到嗎?我只是浪費了一整小時,試圖弄清楚這裏發生了什麼:facepalm: – morha13

+0

你可能需要休息一下哈哈 –

2

您正在嘗試設置字符串,但putStringSet接受型的第二個參數設置

使用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();