创建新的首选项并坚持下去?

时间:2011-06-23 15:49:12

标签: android preferences

我正在尝试在PreferenceGroup下创建一个新的CheckBoxPreference来显示标签。计划是使用以下代码添加标记:

  for(Tag t : tags) {
        pref = new CheckBoxPreference(FoodhunterCredentials.this);
        boolean isChecked = wasChecked(t.getName());

        pref.setTitle(t.getName());
        pref.setSummary(t.getDescription());
        pref.setChecked(isChecked);
        pref.setPersistent(true);

        Log.d("Credentials", String.format("Adding checkbox %s -%schecked", t, isChecked ? " " : " not "));

        tagsGroup.addPreference(pref);
   }

但在关闭活动后,新复选框已消失。有没有办法坚持新创建的偏好?需要明确的是:这不是关于在定义的首选项中存储新值,而是存储新创建的首选项。

2 个答案:

答案 0 :(得分:1)

您无法有问题地修改XML布局文件。您可以存储SharedPreferences or Database中有一个额外复选框的事实,但没有超级干净的方式来做你想要的。

答案 1 :(得分:1)

您可以使用DB存储所有标签(最好这样做)。

或者,如果您出于某种原因不想使用数据库,则可以通过下一种方式破解SharedPreferneces

  1. 创建名为“tags”的空字符串首选项(这在PreferenceActivity中不可见)。
  2. 当用户添加新标签时,您会将标签名称添加到“标签”字符串首选项并保存。
  3. 例如,您的“标签”字符串可能看起来像“java; android; helper; europe”。您需要进行重复检查并自行解析。因为您需要在onCreate()方法中使用CheckBoxPreference为每个标记自动填充PreferenceScreen,但您已经知道如何操作。


    是的,在API级别11(Android 3.0)及更高版本中,您可以在SharedPrefernces中使用字符串集。有关详细信息,请参阅getStringSetputStringSet