[英]Android, SharedPreferences default values not set if there is no pref
[英]Android sharedPreferences set default values issue
我在项目中使用了一些活动。 其中之一是从PreferenceActivity扩展的。 我有一个CheckBoxPreference和一个EditTextPreference,我可以使用以下方法从所有其他活动中获取值:
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
pref = sharedPrefs.getString("edit_text_pref", "error");
但是当我打开我的应用程序时,必须将这些值设置为默认值,因此我正在使用:
PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().clear().commit();
在我的主要活动中。 一切都应该没问题,但是如果在从首选项菜单中设置首选项之前尝试获取首选项,则会收到“错误”,而不是我在xml首选项文件中设置的默认值。 如果我评论getDefaultSharedPreferences
行,则可以正常工作,但很明显,当我打开该应用程序时,会得到旧的首选项。 我该如何绕过这个问题?
您必须使用此setDefaultValues (Context context, int resId, boolean readAgain)
类似
PreferenceManager.setDefaultValues(this, R.xml.preference, false);
仔细查看参数中的注释部分。 这是在重复读取参数
context
共享首选项的上下文。
resId
首选项XML文件的资源ID。
KEY_HAS_SET_DEFAULT_VALUES
为false)时,此方法才设置默认值。 要尝试绕过此检查再次设置默认值,请将readAgain设置为true。 getDefaultSharedPreferences(Context)
并清除它,然后调用此方法并将此参数设置为true 所以我想清除它后,您需要通过将readAgain传递为true来将其设置为默认值
就像是
PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().clear().commit();
PreferenceManager.setDefaultValues(this, R.xml.preference, true);
您正在接收默认值本身,即“错误”,因为使用“首选项”时,当您获取任何首选项的值时,您需要指定一个值,如果之前未设置该首选项,则该值将返回。 就您而言,在此处将默认值设置为“错误”时, pref = sharedPrefs.getString("edit_text_pref", "error");
所以多数民众赞成在默认值。
好吧,我坚称“错误”是在读取值时出错而不是未设置值时使用的值!
谢谢,应该可以,我要尝试
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.