Android Kotlin - Создать диалог внутри функции обратного вызова - PullRequest
0 голосов
/ 02 июля 2018

Я пытаюсь создать диалог внутри обратного вызова 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()
    }

}

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Попробуйте это

 override fun onSuccess() {
      println("onSuccess called")
      runOnUiThread { createDialog() }
 }
0 голосов
/ 02 июля 2018

Установить вид для диалогового окна:

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()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...