用checkbox以编程方式填充首选项

在我的设置页面中,我有一个首选项,它提取我想要显示为单个checkbox首选项的可切换的设置列表。

我知道preferences.xml支持生成preferences.xml列表(查看Wi-Fi设置页面),但ListPreference只允许您从列表中select一个。

我一直在寻找如何以编程方式生成首选项,但只能find如何更改已经在XML中的首选项的属性。

Solutions Collecting From Web of "用checkbox以编程方式填充首选项"

这里是一个简短的例子(假设你正在扩展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文件中添加首选项和其他首选项:其他解决scheme对我无效,因为我还有一个带有首选项的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); 

旁注:因为我需要生成一个dynamic的checkbox列表,这是最适合内部PreferenceScreen。 所以我在xml里创build了这个PreferenceScreen,然后在里面dynamic生成了checkbox。 这样的顺序并不重要,因为所有的“新”dynamicacheckbox都在这个屏幕内。