首页 > 解决方案 > 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()
    }

}

标签: androidkotlin

解决方案


尝试这个

 override fun onSuccess() {
      println("onSuccess called")
      runOnUiThread { createDialog() }
 }

推荐阅读