2017-10-04 19 views
-3

共有設定値を変更しましたが、それでも古い値を返します。私は何が欠けていますか?SharedPreferencesは編集後も同じ値を返します

このコードは、ユーザーがRecyclerViewのアイテムをクリックしたときに実行されます。だから最初のクリックで、私はメッセージ" this true"を期待通りに受け取る。しかし、2回目のクリックでも" this true"が得られますが、"this false"が必要です。

SharedPreferences prefs = context.getSharedPreferences(MY_PREF, Context.MODE_PRIVATE); 
    boolean value = prefs.getBoolean(KEY_PREF, true); 
    if (value) { 
     Log.v(LOG_TAG, "this true"); 
     Log.v(LOG_TAG, "editing value.."); 
     SharedPreferences.Editor prefs = context.getSharedPreferences(MY_PREF, MODE_PRIVATE).edit(); 
     prefs.putBoolean(KEY_PREF, new_value); 
     prefs.apply(); 
    } else { 
     Log.v(LOG_TAG, "this false"); 
    } 
+0

'new_value'の値は何ですか?おそらく '!value'を代わりに保存してください。これにより、値が切り替わります。 –

答えて

0

prefs.applyは非同期です。すぐに変更が反映されることはありません。代わりに、同期してprefs.commitを使用することができます。

3

あなたが保存しているのは、常にtrueです。this falseが表示されることはありません。実際には、new_valueは割り当てられていないと宣言されていないため、コードはコンパイルされません。

PS:getSharedPreferences()をもう一度呼び出すのは意味がありません。 if()ブロックを入力する前にすでにprefsになっています。

+0

ええ、申し訳ありません。実際には私はそこにnewValueを置く –

+0

質問を更新する –

+0

これは単なるコードです。私はすべて宣言して割り当てました –

関連する問題