2013-10-21 13 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(); 

- 私は、文字列を設定してのonCreateメソッドでその直後にそれを読んでもらいたいです。しかし、私は常に指定されたデフォルト値 "7"を取得します。

何が間違っていましたか?私はすでにその問題について研究していましたが、有用なものは見つけられませんでした。あなたの助けのための

感謝:)

+3

あなたが二回編集を呼び出して...()putString( "ユーロ"、 "1.80")s.editを試してみてくださいコミット();下の余分なs.edit()を削除してください。 – cYrixmorten

答えて

9

あなたは「s.edit()」を呼び出すたびに、新しいエディタが作成されます。したがって、あなたの "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(); 

:これを試してみてください。あなたのコードで間違っていると思いますが、ここで別の "Editor"インスタンスを使用しています:

"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", ""); 
2

は、以下の私のコードを試してみてくださいしてみ

SharedPreferences s = this.getSharedPreferences("kurs",MODE_WORLD_READABLE); 
Editor editor = s.edit(); 
editor.putString("eur", "1.80"); 
editor.commit(); 
関連する問題