添加值到列表首选项中

添加一个项目到列表首选项中,使用:

void setupValues(ListPreference pref) {
    CharSequence[] entries= pref.getEntries();
    entries[entries.length]="l";
    pref.setEntries(entries);
}

但是没实现,虽然我能创建一个新的CharSequence 设置成 EntryValue,像这样:

void setupValues(ListPreference pref) {
    CharSequence[] entries= {"d","e"};
    pref.setEntries(entries);
}

这样的代码是没有问题的,它能够将 "d" 和 "e" 添加到选择列表中。


但是,在你的第一个代码块中,你没有为 entries 数组分配足够的空间来存储新的元素 "l"。你可以使用数组复制函数来分配足够的空间,然后再将新的元素添加到数组中,就像这样:

void setupValues(ListPreference pref) {
    CharSequence[] oldEntries = pref.getEntries();
    int oldLength = oldEntries.length;
    CharSequence[] newEntries = Arrays.copyOf(oldEntries, oldLength + 1);
    newEntries[oldLength] = "l";
    pref.setEntries(newEntries);
}

这样,你就能够在列表首选项中添加新的项目了。