Android 创建新的首选项并将其保留?

Android 创建新的首选项并将其保留?,android,preferences,Android,Preferences,我正在尝试在PreferenceGroup下创建一个新的CheckBoxPreference以显示标记。计划添加代码如下的标签: for(Tag t : tags) { pref = new CheckBoxPreference(FoodhunterCredentials.this); boolean isChecked = wasChecked(t.getName()); pref.setTitle(t.getName());

我正在尝试在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);
   }

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

您无法有问题地修改XML布局文件。您可以存储这样一个事实,即在中有一个额外的复选框,但没有一种超干净的方式来执行您想要的操作。

您可以使用DB来存储所有标记(这是最好的)

或者,如果出于某种原因您不想使用DB,您可以通过下一种方式使用
SharedReferences
进行黑客攻击:

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



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

    我使用默认首选项,并使用“打开自定义对话框”复选框。这不完全是我想要的,但它确实起作用了。