【发布时间】:2013-03-19 17:18:41
【问题描述】:
我有一个包含一些数据的 XML 文件,所以我创建了一个代表它的类:
public class MyData
{
ArrayList<SpecialData> list;
int currentPage, totalPages;
}
您可以猜到我有一个SpecialData 项目列表,每个项目都包含许多字段,currentPage/totalPages 是 XML 文件中的两个唯一值。我需要异步获取和解析 XML 文件,所以我创建了这个类:
class GetXMLTask extends AsyncTask<String, Void, MyData>
{
@Override
protected MyData doInBackground(String... params)
{
MyData md = null;
// Getting/parsing data
return md;
}
}
我试了一下,问题不是来自这里,因为我正确解析了我的 XML 文件并且我的 MyData 对象是完美的。但是后来我在我的主要Activity 类中使用了这样的任务:
MyData md = null;
GetXMLTask task = new GetXMLTask(this);
task.execute(new String[]{url});
// How can this change my md object?
这可能很愚蠢,但我根本不知道如何将我的 MyData 实例从我的主类链接到我通过 AsyncTask 获得的实例。我该怎么办?谢谢。
【问题讨论】:
-
为什么不把 MyData 声明为全局变量并尝试在
onPostExecute()中访问它? -
听起来你可能想要
Future<MyData>。 -
你应该可以只做
task.execute(url),而不是new String[]{url}
标签: java android asynchronous android-asynctask