@@ -23,6 +23,7 @@ import android.view.LayoutInflater
23
23
import android.view.View
24
24
import android.view.ViewGroup
25
25
import android.widget.FrameLayout
26
+ import androidx.activity.OnBackPressedCallback
26
27
import androidx.fragment.app.Fragment
27
28
import androidx.lifecycle.observe
28
29
import com.google.android.material.bottomsheet.BottomSheetBehavior
@@ -146,6 +147,17 @@ class BottomNavDrawerFragment :
146
147
}
147
148
}
148
149
150
+ private val closeDrawerOnBackPressed = object : OnBackPressedCallback (false ) {
151
+ override fun handleOnBackPressed () {
152
+ close()
153
+ }
154
+ }
155
+
156
+ override fun onCreate (savedInstanceState : Bundle ? ) {
157
+ super .onCreate(savedInstanceState)
158
+ requireActivity().onBackPressedDispatcher.addCallback(this , closeDrawerOnBackPressed)
159
+ }
160
+
149
161
override fun onCreateView (
150
162
inflater : LayoutInflater ,
151
163
container : ViewGroup ? ,
@@ -191,6 +203,12 @@ class BottomNavDrawerFragment :
191
203
sandwichProgress = 0F
192
204
}
193
205
})
206
+ // If the drawer is open, pressing the system back button should close the drawer.
207
+ addOnStateChangedAction(object : OnStateChangedAction {
208
+ override fun onStateChanged (sheet : View , newState : Int ) {
209
+ closeDrawerOnBackPressed.isEnabled = newState != STATE_HIDDEN
210
+ }
211
+ })
194
212
}
195
213
196
214
profileImageView.setOnClickListener { toggleSandwich() }
0 commit comments