Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why are there 2 different ComponentActivity classes?

I'm trying to handle back button presses in my fragments by registering an OnBackPressedCallback via addOnBackPressedCallback to receive onBackPressed() callbacks without needing to override the method in your activity (described Nov 5, 2018 release notes for androidx.activity)

If you look at the AppCompatActivity Docs, it claims AppCompatActivity extends from androidx.activity.ComponentActivity.

The problem I'm running into is, in my codebase, AppCompatActivity extends from androidx.core.app.ComponentActivity (doesn't have addOnBackPressedCallback()) instead of androidx.activity.ComponentActivity (has addOnBackPressedCallback()).

My Dependency Versions

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

Can anybody else reproduce this issue? Am I doing something wrong?

like image 621
wooldridgetm Avatar asked Dec 11 '22 03:12

wooldridgetm


1 Answers

androidx.core.app.ComponentActivity is a hidden class that was used prior to androidx.activity.ComponentActivity being created as part of AndroidX Activity 1.0 and Fragment 1.1.0

You need to switch to androidx.appcompat:appcompat:1.1.0-alpha02 to pull in Fragment 1.1.0, which changes FragmentActivity (and hence, AppCompatActivity) to extend androidx.activity.ComponentActivity

like image 149
ianhanniballake Avatar answered Dec 30 '22 13:12

ianhanniballake