0

각 결과 세트가 ViewPager & 인 FragmentStatePageAdapter를 사용하여 검색 결과를 표시합니다. 사용자 정의 AsyncTaskLoader를 사용하여 데이터가로드됩니다. 다른 활동을 할 때/배경으로 돌아갈 때 스크롤 위치를 유지하려고합니다.Backstack에서 프래그먼트가 반환 될 때 호출되는 사용자 정의 로더 - onStartLoading()

protected void onStartLoading() { 
    if (results.size() > 0) { 
     Log.d(TAG, "onStartLoading() - deliver result"); 
     deliverResult(mResults); 
    } 

    if (takeContentChanged() || results.size() == 0) { 
     Log.d(TAG, "onStartLoading() - force load"); 
     // Needed for custom loaders 
     forceLoad(); 
    } 

// Register observer... 

} 

이것은 또한 내가 (스크롤 위치를 복원 할 수 있다는 것을 의미한다 :

그러나, 다른 활동을 탐색하고 돌아 오는, 로더 관리자는 로더의 onStartLoading()를 호출하고 불필요하게 데이터를 다시로드 저장시 조각에 저장 됨). 프래그먼트의 onResume에서이 재로드를 피하는 방법은 없습니까? 조각이 백 스택에서 복원 될 때 호출되지 않는 onActivityCreated()에서만 initLoader()를 호출합니다.

v4 호환성 lib를 사용하고 있습니다.

감사합니다.

+0

어떻게리스트 뷰를 채우는됩니다

또한이 스레드를 읽어보세요? 조각/활동에서 onLoadFinished() 및 onLoaderReset() 호출을 보겠습니다. – kwazi

+0

onLoadFinished()는 검색 키워드를 확인한 후 fillAdapter를 호출했지만 변경되지 않았습니다. 내 onLoaderReset()은 어댑터를 지울뿐입니다. – Hari

+0

그냥 너무 ... 아주 이상한 것으로 나타났습니다. :/onLoadFinished()에서 결과를 무시한 부울 값으로이를 방지해야했습니다. – Patrick

답변

0

작은 힌트를 확인하십시오 ... initLoader을 호출하면 onStartLoading을 호출하지 못할 수도 있지만 확실히 onLoadFinished을 호출하여 이전 결과를 제공합니다.

어쩌면 당신에게 일어날 수 있습니까? Why is onLoadFinished called again after fragment resumed?

+0

다음에 응답 할 때 코드 블록에 함수 이름과 키워드를 래핑하십시오. –