@@ -21,6 +21,7 @@ import android.os.Bundle
21
21
import android.view.Menu
22
22
import android.view.MenuItem
23
23
import android.widget.Toast
24
+ import androidx.activity.OnBackPressedCallback
24
25
import androidx.annotation.IdRes
25
26
import androidx.core.app.ActivityCompat
26
27
import androidx.fragment.app.Fragment
@@ -97,6 +98,13 @@ class MainScreen : AniTrendScreen<MainScreenBinding>() {
97
98
}
98
99
}
99
100
101
+ private val onBackPressedCallback =
102
+ object : OnBackPressedCallback (true ) {
103
+ override fun handleOnBackPressed () {
104
+ onBackPressedDelegate()
105
+ }
106
+ }
107
+
100
108
private suspend fun observeNavigationDrawer () {
101
109
navigationDrawer.navigationFlow
102
110
.onEach(::onNavigationItemSelected)
@@ -151,6 +159,10 @@ class MainScreen : AniTrendScreen<MainScreenBinding>() {
151
159
binding = MainScreenBinding .inflate(layoutInflater)
152
160
setContentView(requireBinding().root)
153
161
setSupportActionBar(requireBinding().bottomAppBar)
162
+ onBackPressedDispatcher.addCallback(
163
+ this ,
164
+ onBackPressedCallback
165
+ )
154
166
}
155
167
156
168
override fun initializeComponents (savedInstanceState : Bundle ? ) {
@@ -213,15 +225,7 @@ class MainScreen : AniTrendScreen<MainScreenBinding>() {
213
225
super .onSaveInstanceState(outState)
214
226
}
215
227
216
- /* *
217
- * Called when the activity has detected the user's press of the back
218
- * key. The [getOnBackPressedDispatcher] will be given a
219
- * chance to handle the back button before the default behavior of
220
- * [android.app.Activity.onBackPressed] is invoked.
221
- *
222
- * @see getOnBackPressedDispatcher
223
- */
224
- override fun onBackPressed () {
228
+ private fun onBackPressedDelegate () {
225
229
if (navigationDrawer.isShowing()) {
226
230
navigationDrawer.dismiss()
227
231
return
0 commit comments