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

时间:2011-05-25 18:54:59

标签: android preferences

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

我知道preferences.xml支持生成偏好列表(查看wi-fi设置页面),但ListPreference仅允许您从列表中选择一个。

我一直在寻找如何以编程方式生成首选项,但只是设法找到如何更改XML中已有的首选项属性。

2 个答案:

答案 0 :(得分:46)

这是一个简短的例子(假设您正在扩展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);
}

答案 1 :(得分:1)

以编程方式在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,然后在其中动态生成了复选框。这样,订购并不重要,因为所有新的'动态复选框在这个屏幕内。