我更改了共享首选项值,但它仍然返回旧值。我错过了什么?
当用户点击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 :(得分: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
。