Skip to content

Instantly share code, notes, and snippets.

private typealias DialogCallback<T> = T.() -> Unit
interface DialogBuilder<T> {
fun title(title: String)
fun title(titleResId: Int)
fun message(message: String)
fun message(messageResId: Int)
private class DialogBuilderImpl<T>(val context: Context) : DialogBuilder<T> {
data class DialogArgs<T>(
val title: String? = null,
val message: String? = null,
val yesButtonAction: Serializable? = null,
val noButtonAction: Serializable? = null,
val yesButtonText: String? = null,
val noButtonText: String? = null
) : Serializable
class BetterDialog<T> : DialogFragment() {
companion object {
val KEY_ARGS = "KEY_ARGS"
val KEY_CALLED_FROM_FRAGMENT = "KEY_CALLED_FROM_FRAGMENT"
val TAG = "DIALOG_TAG"
}
@Suppress("UNCHECKED_CAST")
private val args: DialogBuilderImpl.DialogArgs<T> by lazy {
checkNotNull(arguments?.getSerializable(KEY_ARGS) as DialogBuilderImpl.DialogArgs<T>) { "Args are null!" }