0

I have some trouble with AsyncTaskLoader. My Activity have 2 fragments: FragmentA and FragmentB. At FragmentA at onCreateView() I inited my loader. It starts, load, and return data to onLoadFinished(). It's OK. Now I replace FragmentA by Fragment B like that:

FragmentB fragmentB = FragmentB.createInstance(movieId);
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.addToBackStack(null);
fragmentTransaction.replace(R.id.fragment_container, fragmentB).commit();

After that I click on back button and go back from fragment B to fragment A. And just after returning to fragment A I got called onLoadFinished() again, but I don't want it.

My Loader:

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;
    }
}
Andrew
  • 1,383
  • 7
  • 21

1 Answers1

1

Don't use this fragmentTransaction.replace(R.id.fragment_container, fragmentB).commit(); instead of replace call add method to add fragment

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