用复选框以编程方式填充首选项

问题描述

| 在我的设置页面中,我有一个首选项,该偏好会获取一个可切换设置的列表,我希望这些列表显示为各个复选框的首选项。 我知道
preferences.xml
支持生成首选项列表(查看wi-fi设置页面),但是
ListPreference
仅允许您从列表中选择一个。 我一直在寻找如何以编程方式生成首选项,但仅设法找到如何更改XML中已经存在的首选项的属性。     

解决方法

这是一个简短的示例(假设您要扩展
PreferenceActivity
):
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    PreferenceScreen screen = getPreferenceManager().createPreferenceScreen(this);

    PreferenceCategory category = new PreferenceCategory(this);
    category.setTitle(\"category name\");

    screen.addPreference(category);

    CheckBoxPreference checkBoxPref = new CheckBoxPreference(this);
    checkBoxPref.setTitle(\"title\");
    checkBoxPref.setSummary(\"summary\");
    checkBoxPref.setChecked(true);

    category.addPreference(checkBoxPref);
    setPreferenceScreen(screen);
}
    ,以编程方式添加首选项,并在xml文件中添加其他首选项: 其他解决方案对我不起作用,因为我也有带有首选项的xml。我不确定所有这些调用是否都是必需的/冗余的,但这是可行的。 onCreate()方法,该类扩展了PreferenceActivity:
setContentView(R.layout.preferences);
addPreferencesFromResource(R.xml.preferences);

PreferenceScreen pScreen = getPreferenceManager().createPreferenceScreen(this);     
CheckBoxPreference cb = new CheckBoxPreference(this);
cb.setKey(\"cb\");
cb.setTitle(\"BLAH\");
cb.setOrder(99);        //not working...
pScreen.addPreference(cb);

setPreferenceScreen(pScreen);
addPreferencesFromResource(R.xml.preferences);
旁注:由于我需要生成一个动态复选框列表,因此它最适合放在内部的PreferenceScreen中。因此,我在xml中创建了此PreferenceScreen,然后在其中动态生成了复选框。这种方式的排序没有关系,因为所有“新的” dynamica复选框都在此屏幕内。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...