Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 即使在编辑之后,SharedReferences也会返回相同的值_Android_Sharedpreferences - Fatal编程技术网

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

Android 即使在编辑之后,SharedReferences也会返回相同的值,android,sharedpreferences,Android,Sharedpreferences,我更改了共享首选项值,但它仍然返回旧值。我错过了什么 此代码在用户单击RecyclerView中的项目时执行。所以,在第一次点击时,我得到了预期的消息。但在第二次点击时,我也得到了这一点,但预计这是错误的 调用prefs.apply是异步的。你可能看不到立即的变化。相反,您可以使用同步的prefs.commit。您存储的所有内容始终为真,因此无法显示此错误,因为它永远不会发生。事实上,您的代码不会编译,因为新的_值从未声明为未赋值 PS:第二次调用GetSharedReferences是没有意义

我更改了共享首选项值,但它仍然返回旧值。我错过了什么

此代码在用户单击RecyclerView中的项目时执行。所以,在第一次点击时,我得到了预期的消息。但在第二次点击时,我也得到了这一点,但预计这是错误的

调用prefs.apply是异步的。你可能看不到立即的变化。相反,您可以使用同步的prefs.commit。

您存储的所有内容始终为真,因此无法显示此错误,因为它永远不会发生。事实上,您的代码不会编译,因为新的_值从未声明为未赋值


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");
    }