Skip to content
This repository was archived by the owner on Nov 21, 2024. It is now read-only.

Commit 91d8657

Browse files
committed
Add callback to consume onBackPressed events if navigation drawer is open, closing the drawer.
Change-Id: I7ff0120daaec38d669531bd9fddd96b0a9d3628f
1 parent ac21ad7 commit 91d8657

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

app/src/main/java/com/materialstudies/reply/ui/nav/BottomNavDrawerFragment.kt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import android.view.LayoutInflater
2323
import android.view.View
2424
import android.view.ViewGroup
2525
import android.widget.FrameLayout
26+
import androidx.activity.OnBackPressedCallback
2627
import androidx.fragment.app.Fragment
2728
import androidx.lifecycle.observe
2829
import com.google.android.material.bottomsheet.BottomSheetBehavior
@@ -146,6 +147,17 @@ class BottomNavDrawerFragment :
146147
}
147148
}
148149

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+
149161
override fun onCreateView(
150162
inflater: LayoutInflater,
151163
container: ViewGroup?,
@@ -191,6 +203,12 @@ class BottomNavDrawerFragment :
191203
sandwichProgress = 0F
192204
}
193205
})
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+
})
194212
}
195213

196214
profileImageView.setOnClickListener { toggleSandwich() }

0 commit comments

Comments
 (0)