我正在实现使用 AsyncTask 方法检索后台进程的 JSON 数组,
我有一个数组变量,它在 OnCreate 之前声明并用某个值初始化,
String [] str=new String[100];
存储在 tat 数组变量中,同时在 for 循环中解析 json 数组,
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方法处理的值呢?
最佳答案
您可以在执行后返回字符串列表()
private class LongOperation extends AsyncTask<String, Void, List<String>> {
@Override
protected List<String> doInBackground(String... params) {
List<String> top250 = new ArrayList<String>();
for(int x=0;x<str.length;x++)
{
top250.add(str[x]);
}
return top250;
}
@Override
protected void onPostExecute(List<String> result) {
//validate result and assign to something useful like a field
}
@Override
protected void onPreExecute() {}
@Override
protected void onProgressUpdate(Void... values) {}
}
然后,您可以在验证结果后将结果分配给类中某处的字段。
关于android - 在 Android 中检索 AsyncTask 方法内的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21644390/