Home > Back-end >  How can I add click event to onBackPressed in Fragment?
How can I add click event to onBackPressed in Fragment?

Time:05-05

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()
}
  • Related