I want to add on-click listener to onBackPressed() button. How can I do that?
fun onBackPressed(it: View) {
val title = binding.edittexttitle.text
val notes = binding.edittextnote.text
val d = Date()
val s: CharSequence = DateFormat.format("MMMM d, yyyy ", d.time)
Log.e("@@@@@", "createNotes: $s")
}
CodePudding user response:
You can override handleOnBackPressed.
override fun handleOnBackPressed() {
binding.yourbutton.setOnClickListener {
//TODO
}
}
CodePudding user response:
To override onBackPressed
in fragment
call onBackPressedDispatcher
of the activity
and add a callback
to it. In callback put whatever code you want to be get executed on the back button press.
requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner) {
val title = binding.edittexttitle.text
val notes = binding.edittextnote.text
val d = Date()
val s: CharSequence = DateFormat.format("MMMM d, yyyy ", d.time)
Log.e("@@@@@", "createNotes: $s")
}
Afterwards if you want the back button
to work as it normally does, just disable callback
using isEnabled = false
and then call requireActivity().onBackPressed()
, inside callback lambda.
requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner) {
// Your code
isEnabled = false
requireActivity().onBackPressed()
}