android - Android Kotlin - 在回调函数中创建对话框
问题描述
我正在尝试在回调中创建一个对话框,该回调onSuccess()
再次位于onCreate()
活动的方法中,但对话框视图没有显示。
当我createDialog()
直接在内部调用时,onCreate()
它可以工作。onSuccess()
它在回调函数中不起作用的原因可能是什么?onSuccess()
并且createDialog()
肯定会因为println
出现而被调用。
代码:
class BleDevicesControlActivity : AppCompatActivity() {
private var device: BluetoothDevice? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_ble_devices_control)
connectToDevice(object : BleCommunication.OnConnectionListener {
override fun onSuccess() {
println("onSuccess called")
createDialog()
}
override fun onFailure() {
println("onFailure called")
}
})
}
private fun connectToDevice(onConnectionListener : BleCommunication.OnConnectionListener) {
bleCommunication.connect(device!!, onConnectionListener)
}
private fun createDialog() {
println("createDialog called")
val dialogInflater = LayoutInflater.from(this)
val alertDialogView = dialogInflater.inflate(R.layout.dialog_alert, null)
val alertDialog = AlertDialog.Builder(this).create()
alertDialog.setView(alertDialogView)
alertDialog.show()
}
}
解决方案
尝试这个
override fun onSuccess() {
println("onSuccess called")
runOnUiThread { createDialog() }
}
推荐阅读
- c++ - 如何使用 Apple M1 处理器在 macOS Big Sur 上安装 gcc 11.2.0
- makefile - “make”如何读取/解析具有百分比匹配目标与显式的 Makefile?
- python - 仅使用字符串作为键更改 Django 字段
- php - Doxygen 和 PHP 多行属性
- ios - 防止标签从侧面被切断 - TagsView
- vaadin - 如何在 FormLayout 中设置垂直对齐
- flutter - 如何仅在时间转换日期和时间?
- c++ - 将结构指针数组传递给函数
- python - 带 sdeint 的 SABR 系统
- fortran - 将已保存/静态目标变量公开到外部范围