为什么有 2 个不同的 ComponentActivity 类?

Why are there 2 different ComponentActivity classes?

我正在尝试通过 addOnBackPressedCallback 注册一个 OnBackPressedCallback 来处理我的片段中的后退按钮按下以接收 onBackPressed() 回调,而无需覆盖 [=34] 中的方法=](描述 Nov 5, 2018 release notes for androidx.activity

如果您查看 AppCompatActivity Docs,它声称 AppCompatActivity 扩展自 androidx.activity.ComponentActivity

我 运行 遇到的问题是,在我的代码库中,AppCompatActivity 扩展自 androidx.core.app.ComponentActivity(没有 addOnBackPressedCallback())而不是 androidx.activity.ComponentActivity(有 addOnBackPressedCallback())。

我的依赖版本

implementation "androidx.core:core-ktx:1.0.1"
implementation "androidx.appcompat:appcompat:1.0.2"
implementation "androidx.activity:activity-ktx:1.0.0-alpha04"

其他人可以重现这个问题吗?我做错了什么吗?

androidx.core.app.ComponentActivity 是一个隐藏的 class,它在 androidx.activity.ComponentActivity 之前被用作 AndroidX Activity 1.0 和 Fragment 1.1.0

的一部分

您需要切换到 androidx.appcompat:appcompat:1.1.0-alpha02 以引入 Fragment 1.1.0,它更改 FragmentActivity(因此 AppCompatActivity)以扩展 androidx.activity.ComponentActivity