只有具有 android:defaultValue="true" 的 CheckboxPreference 键将显示在下面的代码中。所以没有显示 defaultValue="false" 的键。那么如何获取我的首选项文件中所有键的列表?
PreferenceManager.setDefaultValues(this,R.xml.settings,true); //readAgain=false is same result
SharedPreferences prefs=PreferenceManager.getDefaultSharedPreferences(this);
Map<String, ?> prefMap=prefs.getAll();
for(String key:prefMap.keySet()) {
Log.d("preference key=",key); //only keys with true are shown
}
}
根据文档 getAll() 应该:“从首选项中检索所有值。” 但是,除非用户稍后设置了首选项,否则它似乎只能获取具有 default=true 的键。
编辑:这可能与 Android Bug: 6441 有关,但没有给我一个解决方法来获取所有密钥。