다음은 내가 가지고있는 문제입니다. View V에있는 FragmentPagerAdapter FPA에 포함되어있는 조각 F가있는 활동 A가 있습니다. (A-> V-> FPA-> F)onDestroy()에서 조각을 분리 할 수 있습니까?
A가 파괴되면 예를 들어, 스왑 된 상태), F가 붙어 있고 FPA에 있으며 V에 있습니다. 그러나 A가 다시 생성되면 (예 : 누군가 다시 버튼을 눌러 활동으로 들어갑니다) V와 FPA가 존재하지 않으므로 F가 첨부 된 상태에서 재 작성되지만 존재하지 않는 무언가에 생성되므로보기 계층 구조에 전혀 없습니다. 그런 다음 FPA가이 프래그먼트에서 instantiateState를 시도 할 때 FPA가이 프래그먼트를 첨부하려고 시도합니다.
분명히이 문제를 해결할 수있는 몇 가지 방법이 있습니다 (예 : V 및 FPA가 onCreate에있는 활동으로 인해 조각이 생성 될 때 어딘가에 있어야 함).하지만 계속 진행하고 싶습니다. 필요할 때만 FPA와 V를 느리게 생성하십시오.
따라서 F의 상태를 onDestroy()에서 분리하도록 업데이트하는 것이 바람직합니다. 그러나 state는 onPause()에 저장되어 있는데, 이것은 내가 여기서 다소 운이 없음을 의미합니다.
A의 onDestroy()에서 저장된 상태를 업데이트하는 방법이 있습니까? "활동이 파괴되면이 조각을 재수 화하지 마십시오"라고 말할 수있는 방법이 있습니까? 이 점에 대해 생각하고있는 다른 명백한 방법이 있습니까? 내가 잘못한 일을 여기에서하는 것 같아.
휴 - 꽤 좋은 입술이야. 마찰 솔루션. FragmentPagerAdapter가 아닌 다른 조각이 복원되어야하는 내 활동에는 확실히 작동하지 않습니다. – secureboot
이 솔루션을 사용하는 동안 특정 Fragments에 대해 상태를 유지하려면, 내가 한 것은 Fragments 상태를 Activity의 State Bundle에 프로그래밍 방식으로 유지하는 것입니다. 액티비티의 onSaveInstanceState()에서 Fragment의 onSaveInstanceState()를 호출하여 Fragment가 Bundle에 상태를 추가 할 수있게했습니다. 프래그먼트를 프로그래밍 방식으로 만들고 추가하는 Activity의 onCreate()에서 Fragment.setArguments()에 번들을 전달합니다.Fragment는 onCreate()에서 getArguments()를 통해 Bundle에서 저장된 상태를 검색하고 onCreate()에 전달 된 Bundle을 무시합니다. – Trevor