首页 > 解决方案 > 在 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()。现在他们同时被调用。我知道我在这里需要一个回调函数,但我不知道如何编写它。

谢谢!

标签: androidkotlin

解决方案


您必须实现 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()
}

在此处输入图像描述


推荐阅读