2014-11-19 3 views
0

이 문제와 관련된 게시물이 있지만 특정 경우에 어떤 일이 벌어지고 있는지 파악하려고합니다. 기본적으로 ListFragment를 인스턴스화하여 사용자가 스크롤 할 수있는 항목의 목록을 표시하는 Activity가 있습니다. 목록 항목을 선택하면 선택 항목의 세부 정보를 표시하기 위해 화면을 "인수"하는 별도의 활동을 시작합니다.ListFragment로 돌아갈 때 위치 복원

이 두 번째 활동에서 뒤로 단추를 누르면 ListFragment의 목록이 다시 표시되지만 항상 목록의 맨 위로 위치가 변경되고 이전의 항목을 올바르게 가져 오는 방법을 찾을 수 없다는 것이 문제입니다 상태에 따라 setSelection 등으로 위치를 바꿀 수 있습니다.

조각에 saveInstanceState가 있으며 세부 활동이 시작될 때 예상대로 호출됩니다. 그러나 세부 활동이 반환 될 때이 번들을 다시 받기 위해 호출 될 확실한 조각 방법을 볼 수 없습니다. onCreateView 및 onViewCreated는 다시 호출되지 않으며 API 14를 대상으로하므로 onViewStateRestored를 사용할 수 없습니다 (해당되는 경우).

아이디어가 있으십니까? 이것은 내가 누락 된 꽤 기본적인 것입니다!

+0

만약'onCreateView'가 호출되지 않았다면, 당신은 어떤 재개 방법을 사용하지 않는 한 아무것도 재설정하지 말아야합니다. – zapl

+0

이 응용 프로그램은 처음에 2.1 용으로 작성되었으며, 사용중인 "startManagingCursor"호출이 레벨 11에서는 더 이상 사용되지 않으며 (현재 내 minSDK는 14입니다!) 그래서 CursorLoader 등을 구현하는 것이 쉽지는 않을 것입니다. 그러나 이것을 해결하는 데 도움이 될 수 있습니다. (내 코드는 지난 수년간의 업그레이드로 인해 해킹당한 것으로 보인다.) – gordonwd

+0

'CursorLoader'는 액티비티 레크리에이션을 가로 질러'Cursor '를 캐쉬하기 때문에, 데이터베이스 요청을 추악함으로부터 분리 시키는데 도움이된다. 활동 라이프 사이클. 데이터베이스에서 데이터를 다시 요청하면 목록이 새로 고침되고 예에서 문제가 해결 될 수 있습니다. – zapl

답변

0

사용되지 않는 startManagingCursor 호출이 원인이었습니다. 나는 그것을 제거하고 모든 것이 잘 작동한다. CursorLoader를 사용할 필요가 없습니다. CursorLoader는 로컬 SQLite 데이터베이스와 함께 간단한 CursorAdapter를 사용하기 때문에 사용할 필요가 없습니다.

관련 문제