프로그래밍 방식으로 인스턴스를 만들고 ViewPager에 ID를 할당하는 ViewGroup이 있습니다. 회전 할 때 "위로"버튼과 화면 방향을 변경하면 뷰가 다시 생성되지만 ViewPager의 마지막 페이지 인덱스는 기억되지 않습니다.프로그래밍 방식으로 설정된보기 ID에 OnRestoreInstanceState()가 적용되지 않았습니다.
OnSaveInstanceState() 및 OnRestoreInstanceState()가 호출되고 있고 둘 다 올바른 페이지 인덱스 정보가 포함되어 있는지 확인했습니다. 하지만 ViewPager는 페이지 인덱스를 0으로 재설정하지 않습니다. 내가 콘솔 실험으로
No package identifier when getting name for resource number [id that I programmatically defined]
내가 메시지가 통지, 나는 XML에 (아이디과 함께) ViewPager를 정의했다. ViewPager를 마지막 페이지 인덱스로 올바르게 설정합니다.
그래서, ViewGroup이 ViewPager가 삭제 될 때 ID가 유지되지 않기 때문에 Android 프레임 워크가 실제로 마지막 상태를 올바르게 복원 할 수 없다고 생각합니다.
어떻게 작동합니까? 이 ViewGroup 내 모든 상태 관련 항목을 포함하고 싶습니다 (예 : Fragment에서 ViewPager 위치를 추적하지 마십시오). 그러나 ID를 계속 유지하지 않으면 작동하지 않는 것처럼 보입니다 (근본 원인 인 경우).
'ViewGroup'의 onSave/onRestoreInstanceState 메소드를 사용하여 사용자가 직접 위치를 저장할 수 없습니까? 저는 사용자 정의 클래스를 사용한다고 가정합니다. – Luksprog
@Luksprog 예,하지만'ViewPager.setCurrentItem (position, false) '호출이 실제로 적용되지 않는 또 다른 문제가 있습니다.ViewPager가 자신의'OnRestoreInstanceState()'를 호출하게함으로써 페이지 인덱스를 올바르게 설정할 수 있습니다. – cheezy