在我的设置页面中,我有一个首选项,它会提取我想要显示为单独复选框首选项的切换设置列表。
我知道preferences.xml
支持生成偏好列表(查看wi-fi设置页面),但ListPreference
仅允许您从列表中选择一个。
我一直在寻找如何以编程方式生成首选项,但只是设法找到如何更改XML中已有的首选项属性。
答案 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,然后在其中动态生成了复选框。这样,订购并不重要,因为所有新的'动态复选框在这个屏幕内。