Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:我如何创建一个带有上下文的偏好数组?_Android_Arrays_Sharedpreferences - Fatal编程技术网

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]=新复选框首选项(此项);
}

非常感谢您如此迅速的回答。这解决了问题。不过,有两次“新”似乎有点奇怪。非常感谢你这么及时的回答。这解决了问题。不过,有两次“新”似乎很奇怪。