2017-10-04 105 views
-3

我更改了共享首選項值,但仍返回舊值。我錯過了什麼?SharedPreferences即使在編輯後也會返回相同的值

此代碼在用戶單擊RecyclerView中的項目時執行。因此,在第一次點擊時,我收到了預期的消息" this true"。但第二次點擊我也得到" 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

這只是一段代碼。我已經宣佈並分配了 –

相關問題