Android Kotlin - 在回调函数中创建对话框

问题描述 投票:0回答:2

我正在尝试在回调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()
    }

}
android kotlin
2个回答
1
投票

试试这个

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

0
投票

设置视图到对话框构建器:

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).setView(alertDialogView).create()
    alertDialog.show()
}
© www.soinside.com 2019 - 2024. All rights reserved.