2014-01-13 5 views
1

내 기본 xml 파일에 XML에 정의 된 단편이있는 FrameLayout이 있습니다. 런타임에 다른 조각을 추가하고 그 위에 세 번째 조각을 추가합니다. 런타임 단편을 추가 할 때 containerIds를 첨부하지 않습니다. 오리엔테이션이 바뀔 때까지 괜찮습니다. 방향이 바뀌면 세 번째 조각이 두 번째 조각 아래에 있습니다. 하지만 분명히 방향 변경 이전의 상태를 유지하기를 원합니다. 즉, 마지막으로 추가 된 부분이 맨 위에 표시되어야합니다.방향이 바뀔 때 단편 Z 순서가 변경됩니다.

조각을 추가 할 때 containerIds를 사용하여 XML에 정의 된 FrameLayout에 추가하려고했지만 containerIds를 넣을 때 런타임 조각이 전혀 나타나지 않습니다.

그래서 containerId를 사용할 때 런타임에 추가 된 조각이 표시되지 않는 이유가 궁금합니다. 이미 조각 (XML에서 정의 된 조각)을 포함하는 컨테이너에 추가되기 때문입니까? 이 문제를 어떻게 해결할 수 있습니까? 런타임 파편을 보관하기 위해 XML에 컨테이너를 추가하려고 시도했지만 작동하지 않는 것 같습니다. 프래그먼트를 표시하는 유일한 방법은 FragmentTransaction.add() 호출에서 containerId를 제거하는 것입니다.

또한 z 단편을 수동으로 변경할 수 있습니까? 나는 이것을 찾기 위해 구글을 많이 찾았으며 어떤 답을 찾지 못했다. 나는 ViewGroup.bringChildToFront()를 사용하고 조각의 getView()에 의해 반환 된 뷰를 사용했지만이 방법은 효과가 없습니다. 또한 getChildFragmentManager()를 사용하여 Android 4.2 이상에서 파편을 중첩 할 수 있지만 이전 API를 지원한다는 것을 알았습니다.이 방법은 지원 라이브러리에없는 것 같습니다.

도움을 주시면 큰 도움이됩니다.

답변

1

내가이 문제를 해결 한 방법은 방향 변경 후 세 번째 조각을 수동으로 다시 만들고 시스템에서 만든 조각을 수동으로 제거하는 것이 었습니다.

관련 문제