Android CheckBoxPreference – 取消/检查所有首选项

前端之家收集整理的这篇文章主要介绍了Android CheckBoxPreference – 取消/检查所有首选项前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个PreferenceScreen只包含CheckBoxPreferences(要选择的类别).我需要一个选项来检查/取消选中所有这些选项.我有以下代码来完成这项工作,但是有一个问题:屏幕上的复选框没有更新 – 我需要在视图上调用一些无效的东西.

这是我现在的代码

  1. private void checkAll() {
  2. SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
  3. SharedPreferences.Editor editor = settings.edit();
  4. @SuppressWarnings("unchecked")
  5. Map<String,Boolean> categories = (Map<String,Boolean>) settings.getAll();
  6. for(String s : categories.keySet()) {
  7. editor.putBoolean(s,true);
  8. }
  9. editor.commit();
  10. }
  11.  
  12. private void uncheckAll() {
  13. SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
  14. SharedPreferences.Editor editor = settings.edit();
  15. @SuppressWarnings("unchecked")
  16. Map<String,false);
  17. }
  18. editor.commit();
  19. this.restart();
  20. }

这段代码工作正常但我需要以某种方式刷新视图以查看结果imediatelly(不仅仅是在关闭并重新启动设置活动之后).

谢谢大家的任何建议!

解决方法

那是因为你实际上并没有抓住偏好对象,只是实际值.在for循环中尝试这个:
  1. boolean theValue = param;
  2. for(String s : categories.keySet()) {
  3. Preference pref = findPreference(s);
  4. if (pref instanceof CheckBoxPreference) {
  5. CheckBoxPreference check = (CheckBoxPreference)pref;
  6. check.setChecked(theValue);
  7. }
  8. }

我认为你可以省略调用编辑器并提交,因为setChecked()会为你做这件事.

也检查this.

猜你在找的Android相关文章