【发布时间】:2013-11-08 10:37:58
【问题描述】:
我在我的项目中使用了一些活动。其中之一是从 PreferenceActivity 扩展而来的。 我有一个 CheckBoxPreference 和一个 EditTextPreference,我可以使用以下方法从所有其他活动中获取值:
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
pref = sharedPrefs.getString("edit_text_pref", "error");
但是当我打开我的应用程序时,值必须设置为默认值,因此我正在使用:
PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().clear().commit();
在我的主要活动中。
一切都应该没问题,但是如果我在从首选项菜单设置它之前尝试获取首选项,我会得到“错误”,而不是我在 xml 首选项文件中设置的默认值。
如果我评论 getDefaultSharedPreferences 行,它工作正常,但显然当我打开应用程序时,我得到了旧的偏好。
如何绕过这个问题?
【问题讨论】:
-
不要使用
getDefaultSharedPreferences,在两个类中使用SharedPreferences prefs = context.getSharedPreferences(TAG, Context.MODE_PRIVATE); -
我用它来设置默认值:PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
标签: android android-preferences