Fra*_*gle 6 android android-preferences sharedpreferences
只有带有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
}
}
Run Code Online (Sandbox Code Playgroud)
根据文档,getAll()应该:"从首选项中检索所有值." 但是,它似乎只获取具有default = true的键,除非用户稍后设置了首选项.
编辑:这可能与Android Bug:6441有关,但是没有给我一个解决方法来获取所有密钥.
您可以使用以下命令访问所有首选项(我用它来启用/禁用所有首选项):
final ListAdapter adapter = getPreferenceScreen().getRootAdapter();
for (int i = 0; i < adapter.getCount(); i++) {
Object object = adapter.getItem(i);
if(object instanceof Preference){
((Preference)object).setEnabled(state); // state -> my own variable
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1659 次 |
| 最近记录: |