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

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

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

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

  • 从(子)PreferenceScreen返回时更新PreferenceActivity中的现有首选项
  • Android PreferenceScreen标题分两行
  • 用户首选项文件与应用首选项文件
  • Androidcheckbox首选项
  • 当新版本中的偏好结构发生变化时,Android用户偏好的现有数据会发生什么变化?
  • 如何以编程方式删除PreferenceCategory?
  • SharedPreferences可以在不同的Android应用程序之间共享吗?
  • cachingSharedPreferences的值是否有意义?
  • 这里是一个简短的例子(假设你正在扩展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都在这个屏幕内。