본문 바로가기
개발/안드로이드 어플

안드로이드 어플 Fragment란 ? + 수명주기

by 외노자개발 2022. 12. 5.
반응형

Fragment란


프래그먼트(Fragment)란 앱 UI의 재사용 가능한 부분을 만들 수 있는 뷰입니다.Activity와 비교하면, 프래그먼트(Fragment)는 각각의 세밀한 단위로의 레이아웃을 정의해 관리할 수 있습니다. 이하 Fragment라고 부릅니다.

 

 또한 라이프사이클도 가지고 있기 때문에 다양한 제어가 가능하거나 입력 이벤트의 처리도 할 수 있습니다.

 

 Fragment의 위치 지정은 UI의 파트이므로 항상 Activity의 하위 뷰로 구성해야 하며 Fragment 단위로 표시하지 않습니다. 자주 사용되는 예로는 다음 그림의 구성을 들 수 있습니다.

 

 

예를 들어서 Activity라는 큰 테두리에 "홈"버튼과 "설정"버튼을 배치합니다.
「홈」 버튼과 「설정」 버튼을 누르는 것과 동시에, 상부의 「홈 Fragment」와 「설정 Fragment」를 전환하는 UI로, 

각 Fragment가 Activity와는 독립하고 있으므로, Fragment라고 하는 1개의 UI 부품 를 재사용하거나 수정하는 것이 쉬워집니다.
 또한 Activity에 의존하지 않으므로 여러 Activity에서 호출할 수 있습니다. 따라서 재사용 가능한 구성 요소가 될 수 있습니다. Activity로 화면을 작성한 경우에는, 그 화면은 다른 Activity에서는 이용할 수 없기 때문에, Fragment를 이용하는 편이 범용성이 높아집니다.

 

Fragment의 수명주기


Activity의 라이프사이클에 대해 설명했지만 Activity와 마찬가지로 Fragment도 라이프사이클을 가지고 있어 라이프사이클을 의식한 개발을 할 필요가 있습니다.
 ※Activity의 라이프 사이클을 모르는 분은 아래를 참조하십시오.

 

 

 Activity와 같은 부분 콜백 함수는 생략하지만 Fragment의 라이프 사이클에서 중요한 점은 onAttach(), onCreateView(), onActivityCreated(), onDestoyView(), onDetach()입니다.


 Fragment는 설명한 것처럼, 단독으로 동작하지 않고 항상 Activity의 자식 뷰로서 동작하기 때문에, Attach와 Detach, 영어를 번역하면 「붙은」 「제거되었다」라는 개념이 존재합니다.

 

 Fragment 자체에서 보면, Activity에 붙여진 시점에서 UI가 작성되어, 제거된 시점에서 UI를 파기해야 하기 때문에, 파기된 시점에서 데이터의 보존이나 삭제를 해 둘 필요가 있습니다. 아래는 각 콜백 함수에 대한 설명입니다.

 

onAttach() Activity가 Fragment가 설치된
시점에서 호출되는 콜백 함수
onCreateView() Fragment에서 UI를 그릴 때
호출되는 함수
onActivityCreated() Activity에서 onCreate()가 완료될 때 호출되는
콜백 함수
onDestoyView() Fragment의 UI(View)가 파기된 타이밍에
호출되는 콜백 함수
onDetach() Activity가 Fragment를 제거한
시점에서 호출되는 콜백 함수

 

 

FragmentManager란?


 FragmentManager란 그 이름대로 Fragment를 관리하기 위한 클래스로, Activity에서 Fragment의 추가/삭제/치환/백 스택 등을 검지해 제어를 하기 위한 클래스입니다.

 

 응용 예로는 Activity의 자식 뷰로 Fragment를 사용할 뿐만 아니라 Fragment의 자식 뷰, 즉

Activity → Fragment → Fragment와 같은 구성도 만들 수 있으므로이 경우에는 Fragment 클래스 내에서 FragmentManager를 호출해야 합니다.

 

 

 

FragmentTransaction이란?


 FragmentTransaction이란, FragmentManager에서는 각 Fragment에 대해서 관리를 할 수 있는 것에 대해, FragmentTransaction은 실제로 Activity에 Fragment를 추가하기 위해 commit(커밋)을 실행하거나, Fragment의 교환을 실시하거나 할 수 있다 클래스입니다.

 

 사용법은 FragmentTranasction에서 Fragment를 표시하거나 백 스택으로 이동시켜 FragmentManager에서 상태를 관리합니다.

 

 

반응형

댓글