세로 모드에서 내 ViewPager
에는 A, B, C 세 조각이 있지만 가로 모드에서는 조각 A와 C가 두 개뿐입니다. 따라서 각 모드에 대해 2 FragmentStatePagerAdapter
을 만듭니다. 문제는 화면 방향이 변경되었을 때입니다. ViewPager
은 이전 방향의 이전 조각을 복원하고 사용합니다. 예를 들어 세로에서 가로로 방향을 변경하면 ViewPager
은 A와 C 대신 2 개의 조각 A, B를 표시합니다. 왜 이런 일이 발생하는지 알고 있지만 이에 대한 좋은 해결책을 찾을 수 없습니다.세로 및 가로 방향에 대해 서로 다른 어댑터가있는 ViewPager
내 현재 해결 방법은 ViewPager
(예 : portrait의 경우 id/viewpager_portrait, 가로 레이아웃의 경우/viewpager_portrait)에 다른 ID를 사용하여 조각을 재사용하지 못하게하지만 이전 조각이 삭제되지 않으므로 메모리 누수가 발생합니다. 여전히 기억에 남을 것입니다.
액티비티의 onCreate
에서 super.onCreate (null)을 호출하거나 액티비티 onSaveInstanceState
에서 ViewPager
조각을 제거하는 등의 임시 해결책을 시도했지만 모두 내 애플리케이션을 중단시킵니다.
오리엔테이션을 변경했을 때 FragmentStatePagerAdapter
에 하나 이상의 조각을 재사용하지 않으려면 어떻게해야합니까?
도움을 주시면 감사하겠습니다. 미리 감사드립니다.
'onSaveInstanceState'를 무시하고 해당 메소드에서'super.onSaveInstanceState'를 호출하지 않았습니까? 이렇게하면'Fragment'가 저장되지 않습니다. –
그것이 현재의 해결 방법이지만 super.onSaveInstanceState를 호출하지 말고 ViewPager가 만든 모든 상태를 지 웁니다. ViewPager 내부에서 충돌이 발생하기 때문에 이것이 최선의 해결책이라고 생각하지 않습니다. – Wayne