diff --git a/app/src/main/kotlin/co/anitrend/component/screen/MainScreen.kt b/app/src/main/kotlin/co/anitrend/component/screen/MainScreen.kt index 8c2a2db97..93096491a 100644 --- a/app/src/main/kotlin/co/anitrend/component/screen/MainScreen.kt +++ b/app/src/main/kotlin/co/anitrend/component/screen/MainScreen.kt @@ -21,6 +21,7 @@ import android.os.Bundle import android.view.Menu import android.view.MenuItem import android.widget.Toast +import androidx.activity.OnBackPressedCallback import androidx.annotation.IdRes import androidx.core.app.ActivityCompat import androidx.fragment.app.Fragment @@ -97,6 +98,13 @@ class MainScreen : AniTrendScreen() { } } + private val onBackPressedCallback = + object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + onBackPressedDelegate() + } + } + private suspend fun observeNavigationDrawer() { navigationDrawer.navigationFlow .onEach(::onNavigationItemSelected) @@ -151,6 +159,10 @@ class MainScreen : AniTrendScreen() { binding = MainScreenBinding.inflate(layoutInflater) setContentView(requireBinding().root) setSupportActionBar(requireBinding().bottomAppBar) + onBackPressedDispatcher.addCallback( + this, + onBackPressedCallback + ) } override fun initializeComponents(savedInstanceState: Bundle?) { @@ -213,15 +225,7 @@ class MainScreen : AniTrendScreen() { super.onSaveInstanceState(outState) } - /** - * Called when the activity has detected the user's press of the back - * key. The [getOnBackPressedDispatcher] will be given a - * chance to handle the back button before the default behavior of - * [android.app.Activity.onBackPressed] is invoked. - * - * @see getOnBackPressedDispatcher - */ - override fun onBackPressed() { + private fun onBackPressedDelegate() { if (navigationDrawer.isShowing()) { navigationDrawer.dismiss() return