0

我的班级中有一个字符串数组,我正在尝试在异步任务中使用它,但在能够运行之前,我使用数组的异步任务中的行有错误提示“无法解析为变量” . 我需要在异步任务之外使用数组,所以我不能只在异步任务中创建数组。

当我将鼠标悬停在错误上时,它给了我两个选项,“在类型'myclass'中创建字段'myarray'”或“在类型'myclass'中创建常量'myarray'”。两者都将摆脱错误,但实际上都不起作用,因为当我运行程序时我得到另一个错误,两者都会说“空指针异常”,但第一个选项会给我在使用 erray 时的错误异步任务,当类中的另一个函数使用它(非异步任务函数)时,第二个选项将在稍后的过程中给我错误。即使我注释掉该函数中使用数组的部分,我仍然会得到一个空指针异常,但它发生在异步任务期间,我不明白该错误是如何发生的

我知道这有点冗长,我只需要知道如何在类中创建一个数组,然后在异步任务中使用它,我尝试将我的数组设置为公共、公共静态最终等,没有任何效果。请帮忙。

我的代码非常长,所以我将在下面展示一些内容,第一行是我在 onCreate 之前如何在我的类中定义/启动我的原始字符串数组,第二行和第三行是自动生成的选项,当我将鼠标悬停在错误上,它们的顺序与我解释它们的顺序相同。当然,当我运行它时,我会将 3 个中的 2 个注释掉。

    public String[] divyeild = new String[1000];
    public String[] divyield;
    public static final String[] divyield = null;

然后下面的行是我在异步任务中使用数组的地方,'c'来自循环。

    divyield[c]="anything";
4

2 回答 2

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);
        ...

    }
}
于 2013-08-19T04:14:44.957 回答
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.

第一种方式。所有项目均为空。因为你还没有分配。(字符串是一个对象 - 必须在使用前分配。)

for (int i = 0; i < divyeild.length; i++) {
    divyeild[i] = ""; // Assign empty string.
}

当然,这是最好的方法。我不建议你使用这个。

if (divyeild != null) {
    // Please check null before use.
}
于 2013-08-19T04:21:05.843 回答