0

目前我有一些测试代码开始如下:

    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,因为没有上下文。

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

4

1 回答 1

3

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

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

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

for(int i = 0; i < 24; i++){
    mFilterSubjects[i] = new CheckBoxPreference(this);
}
于 2012-09-24T12:00:12.313 回答