2012-02-18 4 views
4

많은 문제를 보았지만 제안 된 방법 중 아무 것도 나에게 도움이되지 않아이 질문을 다시하기로 결정했습니다.DialogFragment는 방향 변경시 사라졌습니다.

문제점 : ActivityFragment 안에 DialogFragment를 기반으로 사용자 지정 대화 상자를 표시하려고합니다. 레이아웃이 다르기 때문에 방향 변경시 활동이 다시 생성됩니다. 그럴 때마다 DialogFragment가 사라집니다. (나는 최신 지원 패키지를 사용하고 있습니다)

것들 내가 피곤 있습니다

  1. 시도하고 dilaog을 저장 onRetainCustomNonConfigurationInstance를 사용하여.
  2. onCreate 대화 상자에서 setRetainInstance (true)를 사용하십시오.
  3. 대화 상자에 정적 newInstance() 메소드가 있습니다.
  4. 는 내부 대화

및 다른 문서화 솔루션에 파괴 리스너를 제거하는 대화 상자들의 OnDestroy를 오버라이드 (override)

  • . 아무 것도 작동하지 않는 것처럼 보입니다.이 솔루션의 변형일지도 모릅니다. 사용자 정의 대화 상자가 여러 주에서 많은 UI 요소를 보유하고 실제로이 작업을 수행해야하는 이유입니다.

    누구나 솔루션에 약간의 코드를 제공해 주시면 감사하겠습니다.

    덕분에, 토템

  • +0

    아마도 당신은 몇 가지 코드를 직접 제공 할 수 있으며, 우리는 당신이 그것을 디버깅 할 수 있습니다. – lyricsboy

    +0

    오리엔테이션 변경 대화 상자를 닫으려고합니다. 목적 ... 당신이 어떻게했는지 보여줄 수있는 코드를 제공 할 수 있습니까? – Rich

    답변

    3

    문제는 FragmentManager 또한 내가 내 자신의 목적을 위해 ActivityFragment에서 재정의 할 때 전화를 무시 부모의 onSaveInstanceState()를 통해 유지되는 것이 었습니다.

    덕분에, 토템

    +6

    동일한 문제가 있지만 어떻게 수정했는지 이해할 수 없습니다. 당신은 무엇을 부주의하게 무시 했습니까? 부모 활동의 onSaveInstanceState? – span

    +1

    @ span - 나는 그의 자식 클래스에서 super.onSaveInstanceState()를 호출하는 것을 잊었다 고 말하고있다. 부모는 onSaveInstanceState에서 프래그먼트를 다시 작성하지만 super를 호출하지 않을 수는 없습니다. – Grimmace

    관련 문제