重置Android的特定首选项

时间:2013-01-30 11:03:58

标签: android preferences

我有很多首选项,我想重置回我的首选项xml文件中指定的默认值。

我不想重置我的所有偏好 - 只需选择几个。

我试过了:

key=getResources().getString(R.string.myPref);
sharedPreferences.edit().remove(key).commit();

这清除了偏好。但是,当我的程序尝试选择首选项时

String myPref = sharedPreferences.getString(key, "");

它只返回空字符串。

如何从XML文件中获取值?

由于

添加我一直在调试的更完整的代码示例:

//Get preferences
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(activity);

//Get preference key
key=getResources().getString(R.string.myPref);

//Get preference value
String myPref = sharedPreferences.getString(key, ""); // Returns a value that has been entered by a user

//Clear preference
sharedPreferences.edit().remove(key).commit();

//Reset preferences to default values - without overwritting all
PreferenceManager.setDefaultValues(currentContext, preferences, false);

//Get preference value again
String myPref = sharedPreferences.getString(key, ""); // Returns an empty string

2 个答案:

答案 0 :(得分:2)

试试PreferenceManager.setDefaultValues(this, R.xml.preferences, false); 这是保存,因为最后一个参数确保用户更改的条目不会被覆盖。

答案 1 :(得分:1)

  

getDefaultSharedPreferences(Context).setDefaultValues(this,R.xml.preference,true);

请务必将最后一个参数 readAgain 设置为 true

这将强制重新读取默认值。如果为false,则此方法仅在以前从未调用过此方法时(或者如果默认值共享首选项文件中的KEY_HAS_SET_DEFAULT_VALUES为false),则设置默认值。要尝试再次绕过此检查设置默认值,请将readAgain设置为true。