Android 即使在编辑之后,SharedReferences也会返回相同的值
我更改了共享首选项值,但它仍然返回旧值。我错过了什么 此代码在用户单击RecyclerView中的项目时执行。所以,在第一次点击时,我得到了预期的消息。但在第二次点击时,我也得到了这一点,但预计这是错误的 调用prefs.apply是异步的。你可能看不到立即的变化。相反,您可以使用同步的prefs.commit。您存储的所有内容始终为真,因此无法显示此错误,因为它永远不会发生。事实上,您的代码不会编译,因为新的_值从未声明为未赋值Android 即使在编辑之后,SharedReferences也会返回相同的值,android,sharedpreferences,Android,Sharedpreferences,我更改了共享首选项值,但它仍然返回旧值。我错过了什么 此代码在用户单击RecyclerView中的项目时执行。所以,在第一次点击时,我得到了预期的消息。但在第二次点击时,我也得到了这一点,但预计这是错误的 调用prefs.apply是异步的。你可能看不到立即的变化。相反,您可以使用同步的prefs.commit。您存储的所有内容始终为真,因此无法显示此错误,因为它永远不会发生。事实上,您的代码不会编译,因为新的_值从未声明为未赋值 PS:第二次调用GetSharedReferences是没有意义
PS:第二次调用GetSharedReferences是没有意义的。在进入if块之前,您已经在prefs中找到了它。是的,对不起。事实上,我把newValue放在这里,这只是一段代码。我已经声明并分配了新价值的价值是什么?也许你应该省钱!价值观。这将切换该值。
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");
}