Fix duplicate entries in backstack

Set empty listener to `setOnItemReselectedListener` to prevent repeated click
Check the backstack before navigating to a new destination using bottom navigation
This commit is contained in:
Krunal Patel 2022-11-20 16:45:14 +05:30
parent 8e13e563ab
commit b45e6f8166

View File

@ -105,6 +105,10 @@ class MainActivity : BaseActivity() {
binding.bottomNav.setOnApplyWindowInsetsListener(null) binding.bottomNav.setOnApplyWindowInsetsListener(null)
// Prevent adding duplicate entries into backstack on multiple
// click on bottom navigation item
binding.bottomNav.setOnItemReselectedListener { }
binding.bottomNav.setOnItemSelectedListener { binding.bottomNav.setOnItemSelectedListener {
// clear backstack if it's the start fragment // clear backstack if it's the start fragment
if (startFragmentId == it.itemId) navController.backQueue.clear() if (startFragmentId == it.itemId) navController.backQueue.clear()
@ -115,8 +119,11 @@ class MainActivity : BaseActivity() {
removeSearchFocus() removeSearchFocus()
// navigate to the selected fragment // navigate to the selected fragment, if the fragment already
// exists in backstack then pop up to that entry
if (!navController.popBackStack(it.itemId, false)) {
navController.navigate(it.itemId) navController.navigate(it.itemId)
}
false false
} }