getBoolean返回false

时间:2015-06-22 20:57:09

标签: java android

我正在编写一个程序,需要检查默认的首选项设置并做出相应的响应。即使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) {

  }
}

3 个答案:

答案 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。