본문 바로가기
Android/오류 해결 일기

[Android] ComponentActivity, FragmentActivity, AppCompatActivity in Compose (Error - Unresolved reference: supportFragmentManager)

by A Coder's Daydream 2025. 4. 13.
SMALL

문제 상황

Compose Activity에서 supportFragmentManager를 사용해 Fragment를 추가하려고 했는데, Unresolved reference: supportFragmentManager 라는 오류가 발생했다.

supportFragmentManager 코드 오류 화면

 

해결방법

 

구글링을 통해 해결 방법을 쉽게 찾았다. (구글링 키워드 - android activity Unresolved reference: supportFragmentManager)

 

아래의 stackoverflow 사이트에는 ComponentActivity 대신에 FragmentActivity 혹은 AppCompatActivity를 상속해야 한다고 되어 있다. 

https://stackoverflow.com/questions/79388426/unresolved-reference-supportfragmentmanager-on-androidstudio

 

Unresolved reference: supportFragmentManager on androidStudio

I have just started creating applications on Android Studio and for that I am looking at an app creation guide in order to see how the Kotlin language works. When creating one of the first Activity I

stackoverflow.com

 

 

아래의 두 개의 사진과 같이, FragmentActivity와 AppCompatActivity 각각 상속해보니 오류가 사라졌다.

FragmentActivity를 상속한 화면
AppCompatActivity를 상속한 화면


원인

ComponentActivity와 FragmentActivity, AppCompatActivity의 차이가 궁금해서 더 알아봤다. 

 

코드를 파고 파고 들어가보니, 상속(계층) 구조는 다음과 같았다.

Activity 상속 구조

 

상속 구조를 보면 해결 방법에 대해 이해할 수 있다.

 

FragmentActivity는 Fragment 관련 기능을 제공하기 때문에 오류를 해결할 수 있었고, AppCompatActivity 역시 FragmentActivity를 상속받기 때문에 동일하게 오류 없이 사용할 수 있었다.

 

또한 일반적으로 Compose 기반의 앱을 생성하면, 기본적으로 androidx.activity 패키지의 ComponentActivity를 상속받도록 설정된다. 이를 통해 ComponentActivity가 Jetpack Compose의 핵심 기능을 제공하는 기반 Activity임을 알 수 있다.

그리고 AppCompatActivity와 FragmentActivity 역시 ComponentActivity를 상속하고 있기 때문에, 이들 Activity에서도 Jetpack Compose를 자연스럽게 사용할 수 있다.

 

 

Activity별 사용하기 적절한 클래스를 분류해보면 다음과 같다.

  • AppCompatActivity - 거의 대부분의 앱, Material Theme 지원
  • FragmentActivity - Compose + Fragment 사용하는 경우
  • ComponentActivity - 완전한 Compose 기반의 앱
  • 그 외의 androidx.core.app.ComponentActivity는 내부 전용이며, android.app.Activity도 내부 전용 시스템이다. (개발자가 직접 쓸 일이 거의 없는 것 같다.)