返回片段后调用OnLoadFinished

时间:2015-09-07 16:50:51

标签: android loader

我在使用AsyncTaskLoader方面遇到了一些麻烦。 我的Activity有2个片段:FragmentA和FragmentB。在FragmentA的onCreateView()我参加了我的装载机。它启动,加载和返回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;
    }
}

1 个答案:

答案 0 :(得分:1)

不要使用此fragmentTransaction.replace(R.id.fragment_container, fragmentB).commit();而不是替换call add方法来添加片段

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