2015-09-07 51 views
0

AsyncTaskLoader有一些問題。 我的活動有2個片段:FragmentA和FragmentB。在onCreateView()的FragmentA處我加載了我的loader。它啓動,加載並將數據返回給onLoadFinished()。沒關係。現在我喜歡更換FragmentA碎片B:在返回片段後調用OnLoadFinished

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

後,我點擊後退按鈕,並從B片段再次回到片段A.而剛剛回到片段AI後接到電話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

不要使用此fragmentTransaction.replace(R.id.fragment_container, fragmentB).commit();,而不是替代電話Add方法添加片段

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

它的工作原理。 onLoadFinished()調用重新添加片段到活動? – Andrew