본문 바로가기

Android Studio (Kotlin)

Android Component (2)

Fragment

Fragment : Activity와 마찬가지로 사용자에게 UI 화면을 제공하는데 사용하는 컴포넌트

여러 개의 Fragment를 하나의 액티비티에 결합하여 다향한 화면 구성의 UI를 제작할 수 있다.

Fragment는 항상 Activity 내에서 호스팅 되어야 한다.

Fragment의 생명주기는 호스트 Activity의 생명주기에 직접적으로 영향을 받는다.

자체적인 생명주기를 가져서 Activity가 실행중인 동안 Fragment로 이루어진 분할된 화면들의 상태를 자체적으로 조작할 수 있다.

FragmentManager를 통해 관리한다.

 

Fragment 생명주기

  • onAttach() : Fragment가 Activity에 붙을 때 호출된다. 하지만 아직 fragment가 완벽하게 생성된 단계는 아니다.
  • onCreate() : 본격적으로 Fragment가 Activity의 호출을 받아 생성되는 단계. UI 초기화는 진행될 수 없다. 넘겨준 값들을 세팅한다.
  • onCreateView() : Layout을 inflate 하는 단계. 뷰 바인딩을 진행한다. view가 초기화 되는 중이기 때문에 ui 초기화 작업을 진행하면 충돌이 일어날 수 있다.
  • onViewCreated() : UI 초기화 진행. View 생성이 완료되었을 때 호출된다.
  • onStart() : fragment가 사용자에게 보여지기 직전에 호출되는 메서드. 해당 메서드가 호출되었을 때 activity는 started 상태이다
  • onResume() : 사용자와의 상호작용을 시작하는 단계. 프로그램이 일시정지되면 onPause가 호출되고 다시 재개되면 onResume을 다시 호출한다. 특정 이벤트가 발생하여 포커스가 떠날 때까지 onResume 단계에 머문다.
  • onPause() : 사용자가 Fragment를 떠나면 가장 먼저 onPause를 호출한다. 사용자와의 상호작용을 중지하는 단계. 사용자가 돌아오지 않을 수도 있으므로 지속되어야하는 변경사항을 onPause에서 저장한다.
  • onStop() : 화면이 더 이상 보여지지 않게 되는 상황에서 호출됨.
  • onDestroyView() : fragment와 연결된 view layer가 제거되는 중일 때 호출
  • onDestroy() : fragment가 제거되기 직전 단계

FragmentManager

: Activity와 Fragment의 중간에서 서로를 이어주는 역할

FragmentManager를 통해 Fragment Trasaction을 수행한다. 

  • findFragmentById() : Fragment 컨테이너 내의 현재 Fragment 참조
  • findFragmentByTag() : Fragment에 고유한 태그를 부여한 후 태그를 이용해 Fragment 참조

Fragment Transaction

: FragmentManager의 단일 수행 단위

하나의 Fragment Transaction 단위 내에 Fragment Transaction 클래스가 제공하는 Fragment 추가/교체/삭제 작업 등을 명시하면 된다.