2011-03-16 8 views
7

두 개의 기본 패널 레이아웃이있는 Honeycomb 애플리케이션을 시작합니다. 왼쪽에는 메뉴가 있고 오른쪽에는 각 섹션의 주요 기능이 있습니다.프래그먼트가있는 두 개의 패널 UI와 개별 액티비티

Fragments API의 사용 가능한 샘플과 달리 오른쪽 패널에 표시된 내용은 각 메뉴 옵션에 대해 완전히 다른 UI로 구성됩니다.

올바른 부분을 선택한 섹션에 따라 바꾸는 것이 유혹적이지만 전체 앱에서 하나의 활동 만 사용하면 좋을 것 같습니다. 게다가 프래그먼트의 수명주기가 활동에 묶여 있으므로 활동이 종료 될 때까지 조각이 죽지 않아 많은 조각이 "생존"합니다.

그러나 각 메뉴 옵션마다 두 개의 패널로 다른 활동을 수행하면 메뉴에 사용 된 조각이 모든 활동에 추가되어야하고 메뉴가 있어야하는 모든 섹션에서 일관되지 않은 레이아웃이 적용됩니다.

여기에 모범 사례가 있습니까?

답변

6

This 블로그 포스트 활동을 통해 조각을 선택하는 이유를 요약

ActivityGroup 를 통해

임베디드 활동은 좋은 생각했지만, 항상 활동 독립적으로 설계되어 있기 때문에 처리 할 어려웠을 대신에 자체 포함 구성 요소가 다른 활동과 밀접하게 상호 작용합니다. Fragment API는 에 대한 더 나은 해결책이며 포함 된 활동 대신 을 사용해야합니다.

의 데이터 보관 활동을 통해 인스턴스 Activity.onRetainNonConfigurationInstance(), 통해 을 수행 할 수 있지만, 이것은 상당히 무거운지는 및 비 분명하다. Fragment는 플래그를 설정하여 전체 Fragment 인스턴스를 유지할 수있게하여 메커니즘을 대체합니다.

은 조각의 전문화는 DialogFragment가 쉽게 활동 수명주기의 일환으로 관리하는 대화 상자를 표시 할 수있게했다. 이는 활동의 "관리 대화"API를 대체합니다.

이라는 ListFragment라는 또 다른 특수화를 통해 데이터 목록을 쉽게 표시 할 수 있습니다. 이것은 기존 ListActivity ( 몇 가지 기능 추가)와 비슷한 이지만, > 다른 데이터로 표시하는 방법에 대한 일반적인 질문은 으로 줄여야합니다. 현재 활동에 연결된 모든 조각 에 대한

정보는 가 활동의 저장 인스턴스 상태에서 프레임 워크에 의해 당신을 위해 저장하고 다시 시작할 때 당신을 위해 복원됩니다. 이것은 상태 저장 및 복원 코드의 양을 크게 줄이면 자신을 작성해야합니다.

프레임 워크는 내장 된 지원 이 쉽게 기존의 활동 다시 스택을 통합 돌아 가기 내 활동 버튼 동작 를 제공 할 수있게, 조각 개체의 백 스택을 관리. 이 상태는 에도 저장되며 자동으로 복원됩니다.

단편은 상당히 새롭기 때문에이 기사를 넘어서는 모범 사례를 많이 찾을 수 있을지 확신하지 못합니다. 나는 당신이해야 할 결정은 내 상호 작용이 단단히 결합되어 있고 데이터를 공유하려는 것이거나 많은 상호 작용이없는 독립적 인 구성 요소라고 생각합니다.


편집, 설명 : 나는 응용 프로그램에 대한 단일 활동을 사용하는 것이 반드시 나쁜 결정이 아니라고 생각. 앱의 기능에 따라 결정해야합니다. 아티클을 기반으로 한 활동은 독립 형이지만 일반적으로 단편은 활동 범위에서 다른 단편과 결합 될 때만 관련이 있습니다. 서로 다른 활동을 조합하여 설명하는 상황은 해결할 Fragments가 고안 한 문제점 중 하나입니다.