我的类中有一个字符串数组,我正在尝试在asynctask中使用它,但在能够运行之前,我使用数组的asynctask中的行有一个错误,说“无法解析为一个变量”。我需要在asynctask之外使用数组,所以我不能只在asynctask中创建数组。
当我将鼠标悬停在错误上时,它给了我两个选项,“在'myclass'类型中创建字段'myarray'”或者在'myclass'类型中创建常量'myarray'。两者都将摆脱错误,但实际上都没有工作,因为当我运行程序时我得到另一个错误,两者都会说“空指针异常”,但是第一个选项会在使用erray时给出错误在异步任务中,第二个选项会在后来的过程中给出错误,当时类中的另一个函数使用它(非asynctask函数)。即使我在该函数中注释掉它使用数组的部分,我仍然得到一个空指针异常,但它发生在asynctask期间,我不明白在我注释掉函数之前该错误是怎么回事使用该数组,因为这发生在异步任务之后。
我知道这有点抽出,我只需要知道如何在类中创建一个数组,然后在asynctask中使用它,我已经尝试将我的数组设置为public,public static final等,没有作品。请帮忙。
我的代码非常长,所以我将在下面展示一些内容,第一行是我在onCreate之前在我的类中定义/启动我的原始String数组,第二行和第三行是自动生成的选项当我徘徊在错误上时,他们按照相同的顺序给出了我的解释。当然,当我运行它时,我将3中的2个注释掉。
public String[] divyeild = new String[1000];
public String[] divyield;
public static final String[] divyield = null;
然后下面的行是我在asynctask中使用数组的地方,'c'来自循环。
divyield[c]="anything";
答案 0 :(得分:0)
你可以这样
public class MainActivity extends Activity {
private String[] divyeild = new String[1000];
private class MyTask extends AsyncTask<Vois, Void, Void>{
private String[] divyeild;
public MyTask(String[] params){
this.divyeild = params;
}
@Override
protected Void doInBackground(Void... params) {
/* You can use this.divyeild here*/
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
MyTask myTask = new MyTask(divyeild);
...
}
}
答案 1 :(得分:0)
public String[] divyeild = new String[1000]; // Work fine
public String[] divyield; // Doesn't work if you don't assign value
public static final String[] divyield = null; // Can't work because you can not re-assign value for this array.
第一种方式。所有项目都为空。因为你尚未分配。 (String是一个Object - 必须在使用前分配。)
for (int i = 0; i < divyeild.length; i++) {
divyeild[i] = ""; // Assign empty string.
}
当然,这是最好的方法。我不建议你用这个。
if (divyeild != null) {
// Please check null before use.
}