繁体   English   中英

getBoolean 返回 false

[英]getBoolean returning false

我正在编写一个需要检查默认首选项设置并做出相应响应的程序。 即使 R.xml.preferences 将 defaultValues 设置为 true,getBoolean 方法也始终返回 false。 我已经测试过preferences.contains(prefKey)并且返回true。

@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) {

  }
}

正是因为这个

 if (preferences.getBoolean(prefKey, false))//your default value here is false

改成

if (preferences.getBoolean(prefKey, true))

在设置默认值之前,尝试清除您的首选项(在 onCreate 中):

PreferenceManager.getDefaultSharedPreferences(this).edit().clear().commit();
PreferenceManager.setDefaultValues(this, R.xml.preferences, true);

PreferenceManager.setDefaultValues()文档:

注意:这不会将首选项重置为其默认值。 对于该功能,请使用 getDefaultSharedPreferences(Context) 并清除它,然后调用此方法并将此参数设置为 true。

也许您之前调用过setDefaultValuesprefKey设置为 false。 根据PreferenceManager 文档

注意:这不会将首选项重置为其默认值。 对于该功能,请使用 getDefaultSharedPreferences(Context) 并清除它,然后调用此方法并将此参数设置为 true。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM