首先,这是一个好习惯,从异步任务访问片段的方法吗?
我有一个异步任务,它生成一个 LatLng 列表,在我的片段中用于绘制折线。但是,如果我尝试使用 getter 方法来获取列表。
public List<LatLng> getList() {
return this.list;
}
我明白nullpointerexceptions
了,所以我必须在片段中执行此操作,
while(list == null) { // FIXME delay because of this
list = getRoute.getList();
}
这违背了拥有后台任务的目的。
有没有办法可以从异步任务的后执行方法中调用该方法?
@Override
protected void onPostExecute(OTPResponseUI otpResponse) {
Fragment.fragmentsMethod(getList());
mDialog.dismiss();
}
这样我就可以正确显示进程对话框,并且在加载列表时不会让用户挂起。
更新 我尝试调用这样的回调,但我的片段中的回调函数没有执行。
UPDATE2 好的,我刚刚将片段实例传递给异步任务,以便能够调用片段方法。根据您的建议:
在您的自定义 AsyncTask 类中创建列表对象,然后在 postExecute() 方法中将其返回给 Fragment。您可以通过直接调用 Fragment 实例上的方法来执行此操作(您将通过构造函数获得。它有效,谢谢!