2013-10-21 49 views
5

我在Android中遇到SharedPreferences問題。SharedPreferences不起作用 - getString始終返回默認值

這是我的代碼:

SharedPreferences s = this.getSharedPreferences("kurs",MODE_WORLD_READABLE); 
    s.edit().putString("eur", "1.80"); 
    s.edit().commit(); 
    SharedPreferences a = this.getSharedPreferences("kurs",MODE_WORLD_READABLE); 
    String kurs = a.getString("eur","7"); 

    Toast hhh= Toast.makeText(getApplicationContext(),kurs, Toast.LENGTH_LONG); 
    hhh.show(); 

I'm設置字符串,並希望之後直接,在onCreate方法來讀出。但我總是得到指定的默認值「7」。

出了什麼問題?我已經研究過這個問題,但我找不到有用的東西。

感謝您的幫助:)

+3

你叫編輯兩次..嘗試s.edit()putString( 「EUR」, 「1.80」)提交()。;並刪除下面的額外s.edit()。 – cYrixmorten

回答

9

每次調用「s.edit()」時新的編輯器創建。因此,您的「commit()」調用位於尚未應用設置的編輯器實例上。試試這個:

SharedPreferences s = this.getSharedPreferences("kurs",MODE_WORLD_READABLE); 
Editor editor = s.edit(); 
editor.putString("eur", "1.80"); 
editor.commit(); 
+0

這工作!謝謝! :-) – Maximii77

1
SharedPreferences myPrefs = this.getSharedPreferences("kurs", MODE_WORLD_READABLE); 
SharedPreferences.Editor editor = myPrefs.edit(); 
editor.putString("eur", "1.80"); 
// commit the edits 
editor.commit(); 


SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", context.MODE_WORLD_READABLE); 
String kurs = myPrefs.getString("eur", "7"); 

Toast hhh= Toast.makeText(getApplicationContext(),kurs, Toast.LENGTH_LONG); 
hhh.show(); 

嘗試這個

2

請嘗試以下我的代碼。我認爲你的代碼是錯誤的,你在這裏使用不同的「編輯器」實例:

「s.edit()。putString(」eur「,」1.80「);」

和這裏

s.edit()提交();

private static String APP_SHARED_PREFS = "MyAppID"; 
// Write the value 
SharedPreferences.Editor prefsEditor = getSharedPreferences(APP_SHARED_PREFS, Activity.MODE_PRIVATE).edit(); 
prefsEditor.putString("KEY", "VALUE"); 
prefsEditor.commit(); 
// Get the value 
return getSharedPreferences(APP_SHARED_PREFS, Activity.MODE_PRIVATE).getString("KEY", "");