style.xml에서 material3의 버튼 속성을 정의한 후 xml에서 Button위젯에 style을 적용 했는데 동작하지 않음.
그러나, MaterialButton위젯에 style을 적용하면 동작함.
버전에 차이도 있었지만 크리티컬하지 않았고, 결론은 최상위 Activity의 상속여부가 달랐다.
AppCompat
- Application Capability (앱 호환성)
- 안드로이드가 OS버전 별로 API가 Deprecate되거나 변경될 때 개발자가 분기처리를 하지 않도록 편의성을 제공해줌
| 특징 | Activity (기본 액티비티) | AppCompatActivity (지원 라이브러리 액티비티) |
|---|
| 패키지 | android.app.Activity | androidx.appcompat.app.AppCompatActivity |
| 지원 라이브러리 | 없음 (기본 Android 기능만 제공) | AndroidX의 AppCompat 라이브러리 사용 |
| ActionBar 지원 | ❌ 직접 구현 필요 | ✅ Toolbar를 자동으로 ActionBar로 사용 가능 |
| Material Design | ❌ 직접 적용해야 함 | ✅ Theme.MaterialComponents 등 최신 테마 지원 |
| Fragment 호환성 | FragmentActivity를 별도로 사용해야 함 | ✅ AppCompatActivity에서 바로 사용 가능 |
| 백호환성 | ❌ 없음 | ✅ 구버전(Android 4.0 이상)에서도 최신 기능 사용 가능 |
언제 Activity vs AppCompatActivity를 사용해야 할까?
| 사용 상황 | 추천 클래스 |
|---|
| 기본적인 액티비티만 필요할 때 | Activity |
최신 UI/UX (Material Design, Toolbar, Fragment 등) 사용 시 | AppCompatActivity |
| 테마 변경 및 다크모드 지원 필요할 때 | AppCompatActivity |
| 기존 Android 3.0 이하를 지원하지 않는 최신 프로젝트 | AppCompatActivity |