Fragment

woniwon·2024년 3월 18일
0

Android

목록 보기
2/19
post-thumbnail

Fragment

  • Activity에서 반복적으로 재사용 가능한 부분 을 재사용하기 위해 탄생 (아이폰 vs 패드) → 자체 UI를 개별 청크로써 지정하고, 개별 청크 단위로 다른 곳에서 재사용이 가능하다.

특징

  • 자체 레이아웃(XML정의 가능) 을 가질 수 있고, 자체 생명주기를 보유한다. 또한, 자체 입력 이벤트를 받으며 처리 가능( 레이아웃 가지는건 선택)
  • 독립적으로 존재 할 수 없고, 다른 Activity나 프래그먼트에 호스팅 되어야함
    • 이때, 해당 프래그먼트의 생명 주기는 호스트 액티비티의 수명 주기에 직접적으로 영향을 받는다.
    • ex) 액티비티가 일시 정지되면, 내부의 모든 프래그먼트도 일시 정지되고, 액티비티가 소멸되면 모든 프래그먼트도 소멸됨. 하지만, 액티비티가 실행중이면 각 프래그먼트는 개별적 조작 가능
  • 프래그먼트의 뷰 계층 구조는 호스트 뷰 계층 구조의 일부가 된다
  • Android Jetpack 라이브러리 중
    • Navigation, BottomNavigationView, ViewPager2 등은 프래그먼트와 호환되도록 설계되어 있어서 프래그먼트가 해당 라이브러리와 함께 자주 사용된다
    • Fragment 라이브러리와 클래스
      • Fragment 클래스는 Object클래스를 상속하고, 여러 인터페이스를 구현하고 있는 클래스이다

장점

  • 런타임시 UI를 사용자와 상호작용하며 실시간 수정 가능

    → 사용자가 앱을 실행하여 사용하는 도중에 Activity 모양 수정 가능

    → BottomNavigationView가 존재하는 앱에서, 사용자가 ‘홈’을 클릭하면 홈이 나오고, ‘마이페이지’를 클릭하면 마이페이지가 나오는 것 (UI가 실시간으로 바뀜 = 프래그먼트 추가/교체/삭제 등의 작업이 실행)

  • 런타임시, 프래그먼트의 변경사항을 FragmentManager 이 관리하는 프래그먼트 백 스택에 변경 사항 히스토리를 저장해 기록할 수 있다.

  • 프래그먼트 백 스택에 저장된 변경 사항들에 한해, 사용자가 ‘뒤로’ 버튼을 눌렀을 경우, 변경사항 취소가 되어 되돌리기 작업을 진행할 수 있음

  • 프래그먼트 클래스에는 자체 UI를 관리하는 로직만 구현해야 하고 다른 Activity나 다른 프래그먼트를 직접 조작하는 로직을 포함해서는 안됨 (모듈성, 재사용성을 해침)

profile
단순 기록용 Velog 입니다.

0개의 댓글