我正在尝试在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);
}
但在关闭活动后,新复选框已消失。有没有办法坚持新创建的偏好?需要明确的是:这不是关于在定义的首选项中存储新值,而是存储新创建的首选项。
答案 0 :(得分:1)
您无法有问题地修改XML布局文件。您可以存储SharedPreferences or Database中有一个额外复选框的事实,但没有超级干净的方式来做你想要的。
答案 1 :(得分:1)
您可以使用DB存储所有标签(最好这样做)。
或者,如果您出于某种原因不想使用数据库,则可以通过下一种方式破解SharedPreferneces
:
例如,您的“标签”字符串可能看起来像“java; android; helper; europe”。您需要进行重复检查并自行解析。因为您需要在onCreate()
方法中使用CheckBoxPreference
为每个标记自动填充PreferenceScreen,但您已经知道如何操作。
是的,在API级别11(Android 3.0)及更高版本中,您可以在SharedPrefernces
中使用字符串集。有关详细信息,请参阅getStringSet
和putStringSet
。