FragmentActivity를 알아보자. (feat. Activity,AppcompatActivity, Fragment)

undefined·2024년 4월 8일
0

Android

목록 보기
3/3

오늘 개발하다가 fragment를 만들다가 코드가 뭔가 다른 것 같아서 보니 fragmentActivity를 잘못 상속받고 있었다. 이 두 클래스는 뭐가 다른건지 갑자기 궁금해서 찾아본 내용을 정리해본다.

일단 이들의 상속관계는 다음과 같다.

java.lang.Object
↳ android.content.Context
↳ android.content.ContextWrapper
↳ android.view.ContextThemeWrapper
↳ android.app.Activity
↳ androidx.activity.ComponentActivity
↳ androidx.fragment.app.FragmentActivity
↳ androidx.appcompat.app.AppCompatActivity

실제로 각 특징을 간단하게 정리해보면 다음과 같다.

Fragment

  • Activity의 생명주기에 의존
  • Activity의 컨텍스트를 사용
  • 자체적으로 UI를 표시할 수 없음
  • FragmentManager를 통해 관리

FragmentActivity

  • Support Library에서 제공되는 클래스로, 안드로이드 버전 호환성 제공
  • Activity의 모든 기능을 제공
  • Fragment를 추가, 제거, 교체하는 기능 제공
  • FragmentManager를 통해 Fragment 관리

AppcompatActivity

  • Support Library에서 제공되는 클래스로, 안드로이드 버전 호환성 제공
  • Material Design과 호환되는 기능을 제공
  • ActionBar, Toolbar, DrawerLayout 등 사용 가능

Activity

  • 독립적인 UI 구성 요소
  • 자체적인 생명주기 관리
  • 앱의 시작점 역할

FragmentActivity도 결국은 Activity여서 그냥 FragmentActivity만 가진 앱을 만들 수 는 있다.
그리고 getSupportFragmentManager() 로 fragmentManager를 가져올 수 있어서 프래그먼트 관리를 쉽게 할 수 있다.

하지만 유의할 점이 있는데,

  • 테마: Activity와 FragmentActivity는 테마를 다르게 적용한다고 한다.
    Activity 테마는 전체 화면에 적용되는 반면,FragmentActivity 테마는 FragmentActivity 내부에 표시되는 Fragment에 적용된다.
  • 액션바: FragmentActivity는 기본적으로 액션바를 표시하지 않아서 액션바를 표시하려면 코드에서 직접 설정해야 한다.
  • 뒤로가기 버튼: FragmentActivity는 기본적으로 뒤로가기 버튼을 처리하지 않아서 코드를 직접 구현해야 한다고 한다.

그래서 각 특징을 봤을 때 FragmentActivity는 탭이나 슬라이더 같이 fragment를 변경할 일이 많은 곳에 사용하면 좋을 것 같다.

profile
이것저것 하고 싶은 게 많은 병아리 개발자

0개의 댓글