【发布时间】:2015-09-08 01:06:08
【问题描述】:
我在使用 AsyncTaskLoader 时遇到了一些问题。 我的活动有 2 个片段:FragmentA 和 FragmentB。在 onCreateView() 的 FragmentA,我启动了我的加载器。它启动、加载数据并将数据返回给 onLoadFinished()。没关系。现在我用 Fragment B 替换 FragmentA:
FragmentB fragmentB = FragmentB.createInstance(movieId);
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.addToBackStack(null);
fragmentTransaction.replace(R.id.fragment_container, fragmentB).commit();
之后我点击返回按钮并从片段 B 返回片段 A。在返回片段 A 之后,我再次调用 onLoadFinished(),但我不想要它。
我的加载器:
private Response data;
public Loader(Context context) {
super(context);
}
@Override
public void deliverResult(Response data) {
if(isReset()) {
return;
}
if(isStarted())
super.deliverResult(data);
}
@Override
protected void onStartLoading() {
if (this.data != null) {
deliverResult(this.data);
}
if (this.data == null) {
forceLoad();
}
}
@Override
protected void onStopLoading() {
cancelLoad();
}
@Override
protected void onReset() {
onStopLoading();
if(this.data != null) {
data = null;
}
}
【问题讨论】: