Android:我如何创建一个带有上下文的偏好数组?
目前,我有一些测试代码,它是这样开始的:Android:我如何创建一个带有上下文的偏好数组?,android,arrays,sharedpreferences,Android,Arrays,Sharedpreferences,目前,我有一些测试代码,它是这样开始的: CheckBoxPreference cb1 = new CheckBoxPreference(this); CheckBoxPreference cb2 = new CheckBoxPreference(this); private CheckBoxPreference[] mFilterSubjects = new CheckBoxPreference(this)[24]; 我想要实现的是一系列CheckBoxPreference
CheckBoxPreference cb1 = new CheckBoxPreference(this);
CheckBoxPreference cb2 = new CheckBoxPreference(this);
private CheckBoxPreference[] mFilterSubjects = new CheckBoxPreference(this)[24];
我想要实现的是一系列CheckBoxPreferences,我希望它们看起来像这样:
CheckBoxPreference cb1 = new CheckBoxPreference(this);
CheckBoxPreference cb2 = new CheckBoxPreference(this);
private CheckBoxPreference[] mFilterSubjects = new CheckBoxPreference(this)[24];
但是,这会生成一个错误“表达式的类型必须是数组类型,但它已解析为CheckBoxPreference”。以下代码编译正确:
private CheckBoxPreference[] mFilterSubjects = new CheckBoxPreference[24];
但是,如果我尝试对数组的某个元素执行某些操作,例如mFilterSubjects[0],则会得到一个NullPointerException,因为没有上下文
如何更改声明以正常工作,换句话说,如何使用上下文声明数组中的每个元素?您只是创建了一个空数组来容纳24个元素,这就是为什么会得到空指针:
private CheckBoxPreference[] mFilterSubjects = new CheckBoxPreference[24];
您需要向该数组添加首选项:
for(int i = 0; i < 24; i++){
mFilterSubjects[i] = new CheckBoxPreference(this);
}
for(int i=0;i<24;i++){
mFilterSubjects[i]=新复选框首选项(此项);
}
您只是创建了一个空数组来容纳24个元素,这就是为什么会得到空指针:
private CheckBoxPreference[] mFilterSubjects = new CheckBoxPreference[24];
您需要向该数组添加首选项:
for(int i = 0; i < 24; i++){
mFilterSubjects[i] = new CheckBoxPreference(this);
}
for(int i=0;i<24;i++){
mFilterSubjects[i]=新复选框首选项(此项);
}
非常感谢您如此迅速的回答。这解决了问题。不过,有两次“新”似乎有点奇怪。非常感谢你这么及时的回答。这解决了问题。不过,有两次“新”似乎很奇怪。