Android SharedReferences变量始终返回false

Android SharedReferences变量始终返回false,android,sharedpreferences,Android,Sharedpreferences,我使用的是一个偏好片段,遵循上的逐步指南 我试图使用这个片段设置一些首选项,因此在代码后面我可以检查每个变量的值以执行相应的操作 Mi首选项片段工作正常。但是,当我试图在代码的其他地方恢复CheckedBoxPreference的值时,它总是返回false 这是首选项xml文件: <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:persistent="true"

我使用的是一个偏好片段,遵循上的逐步指南

我试图使用这个片段设置一些首选项,因此在代码后面我可以检查每个变量的值以执行相应的操作

Mi首选项片段工作正常。但是,当我试图在代码的其他地方恢复CheckedBoxPreference的值时,它总是返回false

这是首选项xml文件:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
    android:persistent="true"
    >
    <PreferenceCategory
        android:title="NOTIFICACIONES"
        android:key="pref_key_storage_settings">

    <CheckBoxPreference
        android:key="sendMail"
        android:defaultValue="false"
        android:persistent="true"
        android:summary="Send emails to contacts"
        android:title="E-mail"/>
</PreferenceCategory>
</PreferenceScreen>
这就是我检查选项是否被选中的方式,这样我就可以向客户发送/或不发送电子邮件

Prefs preferences = Prefs.getInstance(getApplicationContext());
        if(preferences.getBoolean("sendMail")
        {
          // .... send email   
        }
正如我所说,奇怪的是,它一直存在于设置片段上(如果我选择SendEmail选项,即使我关闭应用程序并重新打开它,它也会被选中。但是,当我使用我的方法检查值时,它总是返回false

我做错了什么


谢谢

因为您使用的是首选项片段,所以您应该使用来检索您的首选项。您目前正在使用命名的首选项

发件人:

将首选项对象的层次结构显示为列表。这些首选项 将在用户交互时自动保存到SharedReferences 要检索 此片段中的首选项层次结构将使用,调用 GetDefaultSharedReferences(android.content.Context)中包含上下文 与此片段相同的包

那么这条线呢

sharedPreferences = context.getSharedPreferences(NOMBRE_PREFERENCIAS,context.MODE_PRIVATE);
应替换为:

sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);

很可能您没有正确保存值,是否使用了
value.commit();
value.apply();
method在您的保存方法的末尾?我没有看到保存代码,请添加它。我没有编写任何代码,因为它应该在我更改checkedPreference的状态时自动更改值。我错了吗?正如我所说,它似乎正在存储值,因为我每次输入preferen时都可以看到状态ceFragment和checked状态会相应更改,即使我关闭并重新启动应用程序。但是,我无法使用上面的代码手动检索值。这是我不理解的。
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);