目前我有一些测试代码可以启动这样的代码:
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,因为没有上下文。
如何更改声明才能正常工作,换句话说,如何使用上下文声明数组的每个元素?
答案 0 :(得分:3)
你只是创建一个空数组来容纳24个元素,这就是你得到空指针的原因:
private CheckBoxPreference[] mFilterSubjects = new CheckBoxPreference[24];
您需要为该数组添加首选项:
for(int i = 0; i < 24; i++){
mFilterSubjects[i] = new CheckBoxPreference(this);
}