return 后调用 OnLoadFinished 进行分片

Call OnLoadFinished after return to fragment

我在使用 AsyncTaskLoader 时遇到了一些问题。 我的 Activity 有 2 个片段:FragmentA 和 FragmentB。在 onCreateView() 的 FragmentA 中,我启动了加载程序。它启动、加载 return 数据到 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。就在 return 转到片段 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;
    }
}

不要使用这个fragmentTransaction.replace(R.id.fragment_container, fragmentB).commit();代替调用add方法来添加片段

fragmentTransaction.add(R.id.fragment_container, fragmentB).commit();