我正在编写一个程序,需要检查默认的首选项设置并做出相应的响应。即使R.xml.preferences的defaultValues设置为true,getBoolean方法也始终返回false。我测试过了
preferences.contains(prefKey)
这已经归来了。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fullscreen);
PreferenceManager.setDefaultValues(this, R.xml.preferences, true);
populate();
}
public void populate() {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
try {
for (int x = 0; x < 9; x++) {
if (preferences.getBoolean(prefKey, false)){
for (int max = 0; max < 20; max++) {
System.out.println("this ran"+ max + "times at" + i);
}
} else {
for (int max = 0; max < 20; max++) {
System.out.println("this Skipped"+ max + "times at" + i);
}
}
}
} catch (IOException ioe) {
}
}
答案 0 :(得分:1)
正是因为这个
if (preferences.getBoolean(prefKey, false))//your default value here is false
更改为
if (preferences.getBoolean(prefKey, true))
答案 1 :(得分:1)
在设置默认值之前,请尝试清除prefs(在onCreate中):
PreferenceManager.getDefaultSharedPreferences(this).edit().clear().commit();
PreferenceManager.setDefaultValues(this, R.xml.preferences, true);
来自PreferenceManager.setDefaultValues()文档:
注意:这不会将首选项重置为默认值。 对于该功能,请使用getDefaultSharedPreferences(Context)和 清除它,然后调用此方法,并将此参数设置为 真。
答案 2 :(得分:0)
也许您之前已将setDefaultValues
调用 prefKey 设为false。根据{{3}}
注意:这不会将首选项重置为默认值。对于该功能,请使用getDefaultSharedPreferences(Context)并清除它,然后调用此方法并将此参数设置为true。