각 결과 세트가 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를 사용하고 있습니다.
감사합니다.
어떻게리스트 뷰를 채우는됩니다
또한이 스레드를 읽어보세요? 조각/활동에서 onLoadFinished() 및 onLoaderReset() 호출을 보겠습니다. – kwazi
onLoadFinished()는 검색 키워드를 확인한 후 fillAdapter를 호출했지만 변경되지 않았습니다. 내 onLoaderReset()은 어댑터를 지울뿐입니다. – Hari
그냥 너무 ... 아주 이상한 것으로 나타났습니다. :/onLoadFinished()에서 결과를 무시한 부울 값으로이를 방지해야했습니다. – Patrick