Java SharedReferences未更新其值
下面是我在保存设置函数(DialogFragment)中使用的代码片段: 然后,我通过以下(活动)检索该数据: 这是我的钥匙:Java SharedReferences未更新其值,java,android,sharedpreferences,android-sharedpreferences,Java,Android,Sharedpreferences,Android Sharedpreferences,下面是我在保存设置函数(DialogFragment)中使用的代码片段: 然后,我通过以下(活动)检索该数据: 这是我的钥匙: public static final String ORDER_BY = "orderBy"; public static final String SEARCH_TERM = "search"; 当键相同时,它为什么不更新值,有什么原因吗 getActivity().getPreferences(Context.MODE_PRIVATE); 不是 Prefere
public static final String ORDER_BY = "orderBy";
public static final String SEARCH_TERM = "search";
当键相同时,它为什么不更新值,有什么原因吗
getActivity().getPreferences(Context.MODE_PRIVATE);
不是
PreferenceManager.getDefaultSharedPreferences(this);
在两种方法中都使用第二行
从文档中:
检索一个SharedReferences对象,以访问以下首选项:
此活动的私人信息
不是
PreferenceManager.getDefaultSharedPreferences(this);
在两种方法中都使用第二行
从文档中:
检索一个SharedReferences对象,以访问以下首选项:
此活动的私人信息
使用
PreferenceManager
访问共享参考。使用PreferenceManager
访问共享参考。您更新首选项值的代码是正确的
考虑验证输入控件中的值是否确实更改
并验证应用程序是否具有写入首选项的权限。用于更新首选项值的代码是否正确 考虑验证输入控件中的值是否确实更改
并验证应用程序是否具有写入首选项的权限。您正在使用两种不同的方法来访问
共享引用文件
第一次使用getActivity().getPreferences(Context.MODE\u PRIVATE)
调用Activity,它返回一个SharedReferences对象,该对象应该是请求它的活动的私有对象。此SharedReferences对象指向的首选项文件的名称为CLASS_name.xml
第二次使用
返回一个SharedReferences对象,该对象应可用于整个应用程序。此SharedReferences对象指向的首选项文件的名称为PACKAGE_name_preferences.xml
因此,您的问题是,您使用一个文件来写入首选项,而使用另一个文件来读取它们。尝试使用更全局的思想PreferenceManager.getDefaultSharedReferences(上下文)
来存储与整个应用程序相关的首选项,并且仅使用Activity.getPreferences(int模式)
来存储仅与特定活动相关的首选项。(然后还要记得使用适当的方法来检索它们)您使用两种不同的方法来访问共享引用文件
第一次使用getActivity().getPreferences(Context.MODE\u PRIVATE)
调用Activity,它返回一个SharedReferences对象,该对象应该是请求它的活动的私有对象。此SharedReferences对象指向的首选项文件的名称为CLASS_name.xml
第二次使用
返回一个SharedReferences对象,该对象应可用于整个应用程序。此SharedReferences对象指向的首选项文件的名称为PACKAGE_name_preferences.xml
因此,您的问题是,您使用一个文件来写入首选项,而使用另一个文件来读取它们。尝试使用更全局的思想PreferenceManager.getDefaultSharedReferences(上下文)
来存储与整个应用程序相关的首选项,并且仅使用Activity.getPreferences(int模式)
来存储仅与特定活动相关的首选项。(然后还要记得使用适当的方法来检索它们)修复了它。非常感谢。将作为公认的答案。这就解决了它。非常感谢。将作为公认的答案。
PreferenceManager.getDefaultSharedPreferences(this);