use*_*466 1 android android-preferences
我在项目中使用了一些活动。其中之一是从PreferenceActivity扩展的。我有一个CheckBoxPreference和一个EditTextPreference,我可以使用以下方法从所有其他活动中获取值:
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
pref = sharedPrefs.getString("edit_text_pref", "error");
Run Code Online (Sandbox Code Playgroud)
但是当我打开我的应用程序时,必须将这些值设置为默认值,因此我正在使用:
PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().clear().commit();
Run Code Online (Sandbox Code Playgroud)
在我的主要活动中。一切都应该没问题,但是如果在从首选项菜单中进行设置之前尝试获取首选项,则会出现“错误”,而不是我在xml首选项文件中设置的默认值。如果我对这getDefaultSharedPreferences条线发表评论,则可以正常工作,但很明显,当我打开该应用程序时,我得到了旧的首选项。我该如何绕过这个问题?
小智 5
您一定在使用这种 setDefaultValues (Context context, int resId, boolean readAgain)东西
PreferenceManager.setDefaultValues(this, R.xml.preference, false);
Run Code Online (Sandbox Code Playgroud)
仔细查看参数中的注释部分。这是在重复读取参数
context 共享首选项的上下文。
resId 首选项XML文件的资源ID。
KEY_HAS_SET_DEFAULT_VALUES默认值共享首选项文件中的false为false)时,才设置默认值。要尝试绕过此检查再次设置默认值,请将readAgain设置为true。getDefaultSharedPreferences(Context)并清除它,然后调用此方法并将此参数设置为true所以我想清除它后,您需要通过将readAgain传递为true来将其设置为默认值
就像是
PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().clear().commit();
PreferenceManager.setDefaultValues(this, R.xml.preference, true);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10483 次 |
| 最近记录: |