即使在编辑之后,SharedPreferences也会返回相同的值

时间:2017-10-04 14:05:28

标签: android 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");
    }

2 个答案:

答案 0 :(得分:3)

您存储的所有内容都是```{r TransRef} # Translation reference tr.orig <- translation[,"EN"] ``` ```{r MyFirstParagraph, results='asis', verbatim=TRUE} cat(' # ', translation[tr.orig == "title", lang], ' ', translation[tr.orig == "a sentence", lang], ' - ', translation[tr.orig == "author", lang], ' ', sep = "") ``` ,因此无法显示true,因为它永远不会发生。事实上,您的代码将无法编译,因为this false永远不会被声明为未分配。

PS:第二次打电话给new_value是没有意义的。您在进入getSharedPreferences()区块之前已经在prefs中获得了它。

答案 1 :(得分:0)

调用prefs.apply是异步的。您可能看不到即时更改。相反,您可以使用同步的prefs.commit