2011-07-06 3 views
2

그래서 호환성 라이브러리가있는 태블릿 앱을 만들고 이상하게 들릴 것 같아요. 하나의 활동으로 모두 탭 (탭 A 및 탭 B) 2 개와 조각 3 개 (조각 A1, A2 및 B)가 있습니다. 탭 A와 연관된 ActionBar.TabListener는 조각 A1 및 A2의 추가 및 제거를 처리하고 TabB와 연관된 ActionBar.TabListener는 TabB의 추가 및 제거를 처리합니다.Android FragmentTransaction, ActionBar Tabs 및 Multiple Fragments

활동을 시작하면 이상한 행동이 나타나기 때문에 (탭 A가 선택되고 A1과 A2 단편이 왼쪽에서 오른쪽으로 올바르게 표시됩니다) 탭 B를 클릭하십시오 (단편 A1과 A2가 제거되고 단편 B는 표시된 그대로, 여전히 올바르게) 탭 A를 다시 클릭하십시오! 이제 조각 A1과 A2가 표시되지만 순서는 반대로 : A2와 A1!

이 이상한 사람이 있습니까? 탭 B를 선택한 다음 탭 A를 다시 선택하면 순서가 바뀌고 사이클이 계속됩니다. this article에 따르면 "동일한 컨테이너에 여러 조각을 추가하는 경우 추가 순서에 따라보기 계층에 표시되는 순서가 결정됩니다"라고 이상하게 여기는 경우는 아닙니다.

아이디어가 있으십니까? 미리 감사드립니다!

답변

3

이 기사에 따르면 "동일한 컨테이너에 여러 조각을 추가하는 경우 추가 순서에 따라보기 계층에 나타나는 순서가 결정됩니다. 이상하게 보이지 않습니다. 이제는 그럴 수 있습니다.

개인적으로, 나는 그것에 의지하지 않을 것입니다.

예를 들어, 가로 LinearLayout을 사용한다고 가정 해 보겠습니다. 현재 코드는 두 조각을 모두 LinearLayout에 넣고 있습니다. 내가 접근하는 방식은 FrameLayouts이 이미 LinearLayout에 있고, 각 조각을 FrameLayouts 중 하나에 넣는 것입니다.

+0

흠, 좋은 생각입니다. 그리고 나서 하나의 Fragment 만 표시하려면 두 번째 FrameLayout을 숨 깁니다 (가중치를 0으로 설정)! 최대한 빨리이 프로젝트를 시도해야 할 것입니다. 문서가 말하는 것에 기대를 걸지 않는 이유는 무엇입니까? 단순히 버그가 있거나 FragmentTransactions가 작동하는 방식에 대해 실제로 논리적 인 무언가가 있다고 생각합니까? –

+0

@Shep Shapard : "문서가 말하는 것에 기대를 걸지 않는 이유는 무엇입니까?" - 내가 본 샘플 코드는 따옴표로 묶은 명령문에 의존하지 않기 때문에. 저쪽에, 그것은 단지 직감이다. – CommonsWare

+0

예 ... "최첨단"작업은 문서화되지 않은 기이함을 왼쪽에서 오른쪽으로 처리하기 때문에 매우 짜증나게합니다. 그건 그렇고, 당신의 솔루션이 효과가! 감사! –