如何在Kotlin中成功完成另一个函数后执行一个函数?

时间:2019-10-24 14:35:34

标签: android kotlin

我具有使用动作创建小吃栏的功能:

private fun setupSnackbar(view: View) {
        if (isConnected) {
            showSnackbar(view, Strings.connected, TSnackbar.LENGTH_SHORT)
        } else {
            showSnackbar(view, Strings.notConnected,
            TSnackbar.LENGTH_INDEFINITE).setActionTextColor(
            ContextCompat.getColor(this, R.color.lightGreyBlue)).setAction("Connect") {
                checkBluetoothState()
                connectToProxy()
            }.show()
        }
    }

private fun checkBluetoothState() {
        if (!bluetoothAdapter.isEnabled()) {
            val enableBtIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)
            startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT)
        }
}


我旨在仅在checkBluetoothState()完成(并启用BT)之后执行connectToProxy()。 现在,他们同时被呼叫。我知道我这里需要一个回调函数,但是我不知道如何编写它。

谢谢!

1 个答案:

答案 0 :(得分:0)

您必须实现onActivityResult,在其中您将收到蓝牙动作响应,我已经为您实现了一项基本任务,其中我要求蓝牙onclick。

 btnBluetooth.setOnClickListener {
        val enableBtIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)
        startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT)
    }

您将在onActivityResult中收到结果。

  

我已分配REQUEST_ENABLE_BT = 1,可以更改值。

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)

    if(requestCode==REQUEST_ENABLE_BT && resultCode == RESULT_OK)
    {
        callYourFunction()
    }
}

private fun callYourFunction() {

    Toast.makeText(applicationContext,"Done",Toast.LENGTH_SHORT).show()
}

enter image description here