【发布时间】:2015-02-12 15:41:16
【问题描述】:
我正在为后台进程实现我使用 AsyncTask 方法检索到的 JSON 数组,
我有一个数组变量,它在 OnCreate 之前声明并用一些值初始化,
String [] str=new String[100];
在for循环中解析json数组时存储在tat数组变量中,
str[i]=c.getString(TAG_NAME);
完美存储,我做了 Log,它也在 logcat 中显示,
但问题是当我像这样在我的函数之外使用“str”数组变量时,
void func()
{
List<String> top250 = new ArrayList<String>();
for(int x=0;x<str.length;x++)
{
top250.add(str[x]);
}
}
str 变量只存储字符串“null”作为初始化内存。
它存储“null” 100 次。
那么如何获取AsyncTask内部doInBackground方法处理的值呢?
【问题讨论】:
-
首先你应该解释你使用的一些术语。 “全局”变量是什么意思?它是实例变量吗? “像这样在我的函数之外使用“str”数组变量是什么意思?尽管我不完全理解您的问题,但我认为您正在尝试执行 asynctask 并且“就在 )}.execute(); 之后”你调用其他函数。这将不起作用,因为 asynctask 在单独的线程中运行,这就是为什么您在 asynctask 执行后立即获得 null 的原因。您应该在 doInBackground 或 onPostExecute(...) 中使用 str 数组完成所有工作。