Android API 11+에서 Google은이라는 새로운 클래스를 출시했습니다 Fragment
.
동영상에서 Google은 가능한 경우 ( link1 , link2 ) 활동 대신 조각을 사용해야한다고 제안 하지만 정확한 이유는 설명하지 않았습니다.
프래그먼트의 목적과 프래그먼트의 가능한 용도는 무엇입니까 (단순한 뷰 / 레이아웃으로 쉽게 달성 할 수있는 일부 UI 예제 제외)?
내 질문은 조각에 관한 것입니다.
- 프래그먼트를 사용하는 목적은 무엇입니까?
- 액티비티 / 뷰 / 레이아웃을 사용하는 것과 비교하여 프래그먼트를 사용하는 것의 장점과 단점은 무엇입니까?
보너스 질문 :
- 조각에 정말 흥미로운 용도를 줄 수 있습니까? Google이 동영상에서 언급하지 않은 것들?
- 프래그먼트와 프래그먼트가 포함 된 활동간에 통신하는 가장 좋은 방법은 무엇입니까?
- 프래그먼트를 사용할 때 기억해야 할 가장 중요한 것은 무엇입니까? 경험에 대한 팁과 경고가 있습니까?
답변
# 1 & # 2 조각을 사용하는 목적은 무엇입니까? 활동 / 조회 / 레이아웃을 사용하는 것과 비교하여 조각을 사용하는 장점과 단점은 무엇입니까?
단편은 재사용 가능한 사용자 인터페이스를 작성하기위한 Android 솔루션입니다. 액티비티 및 레이아웃을 사용하여 (예를 들어 포함을 사용하여) 동일한 작업을 수행 할 수 있습니다. 하나; 프래그먼트는 HoneyComb에서 Android API에 연결되어 있습니다. 정교하게하겠습니다.
-
ActionBar
. 탭을 통해 앱을 탐색하려는 경우ActionBar.TabListener
인터페이스가 메소드FragmentTransaction
의 입력 인수로 제공 된다는 것을 금방 알 수 있습니다onTabSelected
. 아마도 이것을 무시하고 다른 일을 할 수 있지만 영리하지는 않지만 API에 대해 작업하고 있습니다. -
FragmentManager
매우 영리한 방법으로 당신을 위해 핸들«뒤로». 뒤로가는 것은 일반 활동과 같이 마지막 활동으로 돌아가는 것을 의미하지 않습니다. 다시 이전 조각 상태로 돌아갑니다. -
ViewPager
a와 함께 cool 을 사용하여FragmentPagerAdapter
스 와이프 인터페이스를 만들 수 있습니다.FragmentPagerAdapter
코드는 일반 어댑터보다 훨씬 깨끗하고, 개별 조각의 인스턴스화를 제어합니다. -
휴대폰과 태블릿 모두에 응용 프로그램을 만들려고 할 때 Fragments를 사용하면 인생이 훨씬 쉬워집니다. 프래그먼트는 Honeycomb + API와 매우 밀접하게 연관되어 있기 때문에 코드를 재사용하기 위해 전화기에서도 사용하고 싶을 것입니다. 호환성 라이브러리가 유용한 곳입니다.
-
휴대 전화 전용 앱에 대해 조각을 사용할 수도 있고 사용해야합니다. 휴대 성을 염두에 둔다면. 내가 사용
ActionBarSherlock
하고 호환성 라이브러리 버전 1.6 같은 모든 방법의 뒷면을 보면 애플 리케이션을 “보고 ICS”를 만들 수 있습니다.ActionBar
탭, 오버플로, 분할 작업 표시 줄,보기 호출기 등 의 최신 기능을 사용할 수 있습니다 .
보너스 2
조각간에 통신하는 가장 좋은 방법은 의도입니다. 프래그먼트에서 무언가를 누르면 일반적으로 그 StartActivity()
위에 데이터가 있습니다. 의도는 시작한 활동의 모든 조각으로 전달됩니다.
답변
어떤 비디오를 언급하고 있는지 확실하지 않지만 직접 교환 할 수 없기 때문에 활동 대신 조각을 사용해야한다고 말하고 있습니다. 실제로 Dev Guide 에는 상당히 자세한 항목 이 있으므로 자세한 내용을 읽어보십시오.
간단히 말해서 조각은 활동 내부에 있으며 각 활동은 많은 조각을 호스팅 할 수 있습니다. 액티비티와 마찬가지로 특정 라이프 사이클이 있으며 액티비티와 달리 최상위 응용 프로그램 구성 요소가 아닙니다. 프래그먼트의 장점은 멀티 패널 인터페이스를 구축하는 기능 (대부분 태블릿에 유용함)을 포함하여 코드 재사용 및 모듈화 (예 : 많은 활동에서 동일한 목록보기 사용)를 포함합니다. 주요 단점은 (일부) 복잡성이 추가된다는 것입니다. 일반적으로 비표준적이고 덜 견고한 방식으로 (사용자 정의)보기로 동일한 것을 얻을 수 있습니다.
답변
조각은보다 모듈화 된 활동 설계를 가능하게하는 활동에 배치 될 수있는 응용 프로그램의 사용자 인터페이스 또는 동작의 일부입니다. 프래그먼트가 일종의 하위 활동이라고 말하면 잘못되지 않습니다.
다음은 조각에 대한 중요한 사항입니다.
-
프래그먼트에는 자체 레이아웃과 자체 수명주기 콜백이있는 자체 동작이 있습니다.
-
활동이 실행되는 동안 활동에서 단편을 추가하거나 제거 할 수 있습니다.
-
단일 활동에서 여러 조각을 결합하여 다중 창 UI를 만들 수 있습니다.
-
단편은 여러 활동에서 사용될 수 있습니다.
-
프래그먼트 수명주기는 호스트 활동의 수명주기와 밀접한 관련이 있습니다.
-
활동이 일시 정지되면 활동에 사용 가능한 모든 프래그먼트도 중지됩니다.
-
조각은 사용자 인터페이스 구성 요소가없는 동작을 구현할 수 있습니다.
-
API 버전 11의 Android 3 (Honeycomb) 에서 Android API에 단편이 추가되었습니다 .
자세한 내용은 공식 사이트 인 Fragments 를 방문하십시오 .
답변
이것은 조각에서 찾은 중요한 정보입니다.
역사적으로 Android 앱의 각 화면은 별도의 활동으로 구현되었습니다. 안드로이드 인 텐트 메커니즘은 액티비티간에 직접 참조 유형 (예 : 객체)을 전달할 수 없기 때문에 화면간에 정보를 전달하는 데 어려움이 있습니다. 대신 객체를 직렬화하거나 전역 적으로 액세스 가능한 참조를 사용할 수 있어야합니다.
각 화면을 별도의 조각으로 만들어이 데이터 전달 두통을 완전히 피할 수 있습니다. 조각은 항상 주어진 활동의 컨텍스트 내에 존재하며 항상 해당 활동에 액세스 할 수 있습니다. 활동 내에서 관심있는 정보를 저장함으로써 각 화면의 조각은 단순히 활동을 통해 객체 참조에 액세스 할 수 있습니다.
출처 : https://www.pluralsight.com/blog/software-development/android-fragments
답변
액티비티는 툴바가있는 앱의 전체 화면 구성 요소이며, 그 밖의 모든 요소는 조각입니다. 도구 모음이있는 하나의 전체 화면 상위 활동에는 여러 개의 분할 창, 스크롤 가능한 페이지, 대화 상자 등 (모든 조각)이있을 수 있으며,이 모두는 상위에서 액세스하고 상위를 통해 통신 할 수 있습니다.
예:
활동 A, 활동 B, 활동 C :
- 예를 들어 기본 도구 모음을 표시하거나 부모 활동을 상속하려면 모든 활동에 동일한 코드를 반복해야합니다 (관리하기가 번거 로움).
- 한 활동에서 다른 활동으로 이동하려면 모든 활동이 메모리에 있거나 (오버 헤드) 다른 활동을 열려면 다른 활동을 파괴해야합니다.
- 활동들 간의 의사 소통은 의도를 통해 이루어질 수 있습니다.
vs
활동 A, 단편 1, 단편 2, 단편 3 :
- 코드 반복이 없으며 모든 화면에는 해당 활동의 툴바 등이 있습니다.
- 한 조각에서 다음 조각으로 이동하는 여러 가지 방법-보기 호출기, 다중 창 등
- 활동에는 대부분의 데이터가 있으므로 조각 간 통신이 최소화되어야합니다. 여전히 필요한 경우 인터페이스를 통해 쉽게 수행 할 수 있습니다.
- 단편은 전체 화면 일 필요는 없으며 설계시 유연성이 뛰어납니다.
- 뷰가 필요하지 않은 경우 조각은 레이아웃을 팽창시킬 필요가 없습니다.
- 여러 활동에서 동일한 조각을 사용할 수 있습니다.
답변
조각은 모든 페이지에 탐색 창을 유지하려는 경우와 같이 일부 경우에 특히 유용합니다. 원하는 프래그먼트로 프레임 레이아웃을 팽창시킬 수 있으며 여전히 탐색 드로어에 액세스 할 수 있습니다.
활동을 사용한 경우 중복 코드를 작성하는 모든 활동에 드로어를 보관해야합니다. 이것은 단편의 흥미로운 사용 중 하나입니다.
저는 Android를 처음 사용하지만 여전히 조각이 도움이 될 것이라고 생각합니다.
답변
나는 이것이 이미 죽음에 대해 논의되었다는 것을 알고 있지만 몇 가지 점을 더하고 싶습니다.
-
조각을 사용하여을 채우고 클릭을 직접
Menu
처리 할 수 있습니다MenuItem
. 따라서 활동에 대한 추가 변조 옵션을 제공합니다. ContextualActionBar 작업 등을 Activity에 대해 알지 않고도 수행 할 수 있으며 기본적으로 Activity가 처리하는 기본 항목 (Navigation / Settings / About)과 분리 할 수 있습니다. -
하위 프 래그가있는 상위 프 래그는 구성 요소를 변조 할 수있는 추가 옵션을 제공 할 수 있습니다. 예를 들어 Frag를 쉽게 교체하고, 새로운 Frag를 Pager 내부에 넣거나 제거하고, 재 배열 할 수 있습니다. 당신의 활동이없는 모든 것은 단지 높은 수준의 물건에 초점을 맞추고 있습니다.