Android:如何使用上下文创建一个首选项数组?

时间:2012-09-24 11:53:58

标签: android arrays sharedpreferences

目前我有一些测试代码可以启动这样的代码:

    CheckBoxPreference cb1 = new CheckBoxPreference(this);
    CheckBoxPreference cb2 = new CheckBoxPreference(this);

我想要实现的是一个CheckBoxPreferences数组,我希望看起来像这样:

private CheckBoxPreference[] mFilterSubjects = new CheckBoxPreference(this)[24];

但是,这会生成错误“表达式的类型必须是数组类型,但它已解析为CheckBoxPreference”。以下代码正确编译:

private CheckBoxPreference[] mFilterSubjects = new CheckBoxPreference[24];

但是,如果我尝试对数组的元素执行某些操作,例如mFilterSubjects [0],我得到一个NullPointerException,因为没有上下文。

如何更改声明才能正常工作,换句话说,如何使用上下文声明数组的每个元素?

1 个答案:

答案 0 :(得分:3)

你只是创建一个空数组来容纳24个元素,这就是你得到空指针的原因:

private CheckBoxPreference[] mFilterSubjects = new CheckBoxPreference[24];

您需要为该数组添加首选项:

for(int i = 0; i < 24; i++){
    mFilterSubjects[i] = new CheckBoxPreference(this);
}