Kotlin Notes

From James's Wiki
Revision as of 21:16, 1 March 2025 by Ractive (talk | contribs)

Custom Listeners

Define the listener
var onDismissListener: (() -> Unit)? = null
Invoke the listener
onDismissListener?.invoke()
Use the listener in another class
dialogRapidShortTimePicker.onDismissListener = {
     Timber.d("Dialog dismissed from helper")
     dismiss()
}

Interfaces for callbacks

Here is an interface used to open dialogs from HomeFragment since dialogs must be opened from a fragment or activity

Code in HomeFragment

At the type we define the Interface used for the listener

enum class DialogTypes {
    RAPID_SHORT_TIME,
    TIME_INPUT_HOUR
}

interface DialogListener {
    fun openDialog(type: DialogTypes)
}

class HomeFragment : Fragment(), LocationProvider, DialogListener {

//other code
...
override fun openDialog(type: DialogTypes) {
       Timber.i("openDialog type: $type")
       when (type) {
           DialogTypes.RAPID_SHORT_TIME -> {
               val dialogRapidShortTimeHelper = DialogRapidShortTimeHelper()
               dialogRapidShortTimeHelper.show(childFragmentManager, "dialog")
           }
           DialogTypes.TIME_INPUT_HOUR -> {
               val dialogTimeInputHourHelper = DialogTimeInputHourHelper()
               dialogTimeInputHourHelper.show(childFragmentManager, "dialog")
           }
       }
   }
}