'when click back button, the app crashs after a seceond
I have customized back button. when I click on it, the application crashes after a second. here is the code: error log
private var mBackPressed: Long = 0
private val timeInterval = 2000
private fun configBackPress() {
requireActivity().onBackPressedDispatcher.addCallback(this, true) {
when {
mBackPressed + timeInterval > System.currentTimeMillis() -> {
requireActivity().onBackPressedDispatcher.onBackPressed()
}
else -> {
Snackbar.make(
requireActivity().findViewById(android.R.id.content),
getString(R.string.press_once_again_back_button_to_exit),
Snackbar.LENGTH_SHORT
)
.setAnchorView(viewBinding.vSnackBarHelper)
.show()
mBackPressed = System.currentTimeMillis()
}
}
}
}
when the user click two times on back button, the back should work.
Solution 1:[1]
before calling requireActivity().onBackPressedDispatcher.onBackPressed(). you should set isEnabled to false because if we go through the onBackPressed source code we see:

it looks for active callbacks and if found any calls them and returns. that's what makes the loop.
your code should be:
isEnabled = false
requireActivity().onBackPressedDispatcher.onBackPressed()
Solution 2:[2]
replace
requireActivity().onBackPressedDispatcher.onBackPressed()
with just
finish()
currently your onBackPressedDispatcher set in Fragment is calling onBackPressed in (required Activity), which will at first try to propagate this event to own childrens - Fragments. so, again, onBackPressedDispatcher will be triggered, again it will call Activitys method and this is loop
edit: isEnabled = false is a better approach, just wanted to leave you some case description
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | mohsen sameti |
| Solution 2 | snachmsm |
