Kotlin Notes: Difference between revisions
From James's Wiki
No edit summary |
No edit summary |
||
Line 16: | Line 16: | ||
==== Code in HomeFragment ==== | ==== Code in HomeFragment ==== | ||
At the type we define the Interface used for the listener | |||
enum class DialogTypes { | enum class DialogTypes { | ||
RAPID_SHORT_TIME, | RAPID_SHORT_TIME, | ||
Line 23: | Line 25: | ||
interface DialogListener { | interface DialogListener { | ||
fun openDialog(type: DialogTypes) | 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") | |||
} | |||
} | |||
} | |||
} | } |
Revision as of 21:16, 1 March 2025
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") } } } }