У меня есть функция, которая создает alertDialog со списком имен пользователей, и я хочу вернуть выбранное имя пользователя из alertDialog в качестве вывода функции.Я использую сопрограммы, чтобы обернуть обратные вызовы.
Проблема заключается в том, что код не ждет, когда пользователь выберет имя пользователя из AlertDialog.
Как заставить код ждать, пока пользователь выберет имя пользователя из AlertDialog?
suspend fun showUserSelectionDialog(usersAndEmails: Map<String, String>) : String? = suspendCancellableCoroutine { cont ->
val users: Array<String> = usersAndEmails.keys.toTypedArray()
val builder = AlertDialog.Builder(activity)
builder.setTitle("Select your username")
.setItems(users) { _, which ->
val username = users[which]
cont.resume(usersAndEmails[username])
}
.setCancelable(true)
.setOnCancelListener {
cont.resume(null)
}
val dialog: AlertDialog = builder.create()
dialog.show()
}
GlobalScope.launch(Dispatchers.Main) {
var username: String? = userSelector.showUserSelectionDialog(usernamesAndEmails)
}
Спасибо!