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