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

해결방법
구글링을 통해 해결 방법을 쉽게 찾았다. (구글링 키워드 - android activity Unresolved reference: supportFragmentManager)
아래의 stackoverflow 사이트에는 ComponentActivity 대신에 FragmentActivity 혹은 AppCompatActivity를 상속해야 한다고 되어 있다.
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 각각 상속해보니 오류가 사라졌다.


원인
ComponentActivity와 FragmentActivity, AppCompatActivity의 차이가 궁금해서 더 알아봤다.
코드를 파고 파고 들어가보니, 상속(계층) 구조는 다음과 같았다.

상속 구조를 보면 해결 방법에 대해 이해할 수 있다.
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도 내부 전용 시스템이다. (개발자가 직접 쓸 일이 거의 없는 것 같다.)
'Android > 오류 해결 일기' 카테고리의 다른 글
| [Android] Execution failed for task ':app:checkDebugDuplicateClasses' (0) | 2025.04.13 |
|---|