Xml View와 Compose를 같이 사용하려는 도중 발생한 상황에서
ComponentActivity를 상속받는 Class에서는 FragmentManager를 사용할 수 없는 문제가 발생
구글링을 통해서
AppCompatActivity를 상속받으면 FragmentManager을 사용할 수 있다는 글을 발견했습니다.
그리고 이유를 더 알고싶어 AppCompatActivity와 ComponentActivity 차이가 뭔지 싶어서 내부 구조를 뜯어봤습니다.
open class ComponentActivity() : androidx.core.app.ComponentActivity(),
public class AppCompatActivity extends FragmentActivity implements AppCompatCallback,
TaskStackBuilder.SupportParentable, ActionBarDrawerToggle.DelegateProvider
AppCompatActivity는 FragmentActivity를 상속받고 있어서 FragmentManager를 사용할 수 있었습니다. 그러면 AppCompatActivity상속 받으면 compose를 사용할 수 있을지 의문이 생겼습니다. 그런데 FragmentActivity 내부를 보니
public class FragmentActivity extends ComponentActivity implements
ActivityCompat.OnRequestPermissionsResultCallback,
ActivityCompat.RequestPermissionsRequestCodeValidator
FragmentActivity는 ComponentActivity를 상속 받고있는 것을 볼 수 있었습니다.
순수 Compose View를 만들 때는 ComponentActivity를
Compose와 xml View를 혼용해서 AppCompatActivity를 사용하는 것이 좋아보입니다.
https://medium.com/@mdhsieh8/showing-materialtimepicker-with-supportfragmentmanager-in-android-compose-ac4345ba19fb
https://stackoverflow.com/questions/67891362/componentactivity-vs-appcompatactivity-in-android-jetpack-compose