Una biblioteca de soporte para Android para ver diálogos suspendiendo la corrutina hasta el final del diálogo.
allprojects {
repositories {
...
maven { url 'https://www.jitpack.io' }
}
}
dependencies {
implementation 'com.github.xeinebiu:android-suspend-dialogs:1.0.0'
}
Confirmar
El siguiente ejemplo muestra cómo se muestra un cuadro de diálogo normal sin ninguna suspensión
MaterialAlertDialogBuilder(this@MainActivity)
.setTitle("Title")
.setMessage("Message")
.setPositiveButton("Positive") { _, _ ->
// code to execute
}
.setNegativeButton("Negative") { _, _ ->
// code to execute
}
.setNeutralButton("Neutral") { _, _ ->
// code to execute
}
.show()
// this code is executed before the dialog is finished
println("Hello World")
Ahora, usando el diálogo de suspensión, podemos esperar a que finalice el diálogo después de continuar con el resto del flujo de código.
val result = SuspendAlertDialog.confirm(
positiveButtonText = "Positive",
negativeButtonText = "Negative",
neutralButtonText = "Neutral"
) {
MaterialAlertDialogBuilder(this@MainActivity)
.setTitle("Title")
.setMessage("Message")
}
// this line is executed after the dialog above is finish
tvResult.text = result.toString()
Si eres fanático de las funciones de extensión, el siguiente enfoque puede usarse para lograr el mismo comportamiento que el anterior.
val result = MaterialAlertDialogBuilder(this@MainActivity)
.setTitle("Title")
.setMessage("Message")
.confirm(
positiveButtonText = "Save",
negativeButtonText = "Cancel",
neutralButtonText = "Neutral",
)
tvResult.text = result.toString()
Alerta
SuspendAlertDialog.alert("Ok") {
MaterialAlertDialogBuilder(this@MainActivity).setTitle("Selected Option")
}
tvResult.text = getString(R.string.alert_finished)
Usando la función de extensión
MaterialAlertDialogBuilder(this@MainActivity)
.setTitle("Selected Option")
.alert("Ok")
tvResult.text = getString(R.string.alert_finished)
Artículos de opción múltiple
val multiChoiceResult = SuspendAlertDialog.setMultiChoiceItems(
positiveButtonText = "Save",
negativeButtonText = "Cancel",
neutralButtonText = "Minimize",
items = SuspendAlertDialog.MultiChoiceItems(
items = listOf("Hello", "World", "Berlin", "Germany"),
checked = listOf(false, false, false, false)
)
) {
MaterialAlertDialogBuilder(this@MainActivity).setTitle("Title")
}
tvResult.text = multiChoiceResult.toString()
Usando la función de extensión
val result = MaterialAlertDialogBuilder(this@MainActivity)
.setTitle("Title")
.setMultiChoiceItems(
positiveButtonText = "Save",
negativeButtonText = "Cancel",
neutralButtonText = "Minimize",
items = SuspendAlertDialog.MultiChoiceItems(
items = listOf("Hello", "World", "Berlin", "Germany"),
checked = listOf(false, false, false, false)
)
)
tvResult.text = result.toString()
Artículos de elección única
val singleChoiceResult = SuspendAlertDialog.setSingleChoiceItems(
positiveButtonText = "Save",
negativeButtonText = "Cancel",
neutralButtonText = "Minimize",
items = SuspendAlertDialog.SingleChoiceItems(
items = listOf("Hello", "World", "Berlin", "Germany"),
selectedIndex = 1
)
) {
MaterialAlertDialogBuilder(this@MainActivity).setTitle("Title")
}
tvResult.text = singleChoiceResult.toString()
Usando la función de extensión
val result = MaterialAlertDialogBuilder(this@MainActivity)
.setTitle("Title")
.setSingleChoiceItems(
positiveButtonText = "Save",
negativeButtonText = "Cancel",
neutralButtonText = "Minimize",
items = SuspendAlertDialog.SingleChoiceItems(
items = listOf("Hello", "World", "Berlin", "Germany"),
selectedIndex = 1
)
)
tvResult.text = result.toString()
Siguiente TODO
.