Skip to content

Instantly share code, notes, and snippets.

@qamarelsafadi
Last active April 4, 2023 10:09
Show Gist options
  • Star 6 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save qamarelsafadi/2b65039f5b49ea4de5ce68609bf56434 to your computer and use it in GitHub Desktop.
Save qamarelsafadi/2b65039f5b49ea4de5ce68609bf56434 to your computer and use it in GitHub Desktop.
OnBackPressed Alternative way for fragments and activities
/* ----------------------------------------- Activity ------------------------------------------ */
/* make sure you have at least 'androidx.activity:activity-ktx:1.6.0-rc01' at your dependencies
(just to let you know this dependency is not stable yet )
*/
implementation 'androidx.activity:activity-ktx:1.6.0-rc01'
fun AppCompatActivity.onBackPressed(isEnabled: Boolean, callback: () -> Unit) {
onBackPressedDispatcher.addCallback(this,
object : OnBackPressedCallback(isEnabled) {
override fun handleOnBackPressed() {
callback()
}
})
}
// How To Use it :
class ExampleActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_example)
onBackPressed(true) {
// do what do you want when get back
}
}
}
/* --------------------------------------------- Fragments --------------------------------------------------- */
// make sure you have at least androidx.activity:activity:1.0.0 at your dependencies
implementation 'androidx.activity:activity-ktx:1.0.0'
fun FragmentActivity.onBackPressed(callback: () -> Unit) {
onBackPressedDispatcher.addCallback(this,
object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
callback()
}
}
)
}
// How To Use it :
class ExampleFragment : Fragment() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
requireActivity().onBackPressed {
// do what do you want when get back
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment