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()。现在他们同时被调用。我知道我在这里需要一个回调函数,但我不知道如何编写它。
谢谢!
解决方案
您必须实现 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()
}
推荐阅读
- c# - 在 C# 中有没有办法将属性与数组一起使用?
- reactjs - 为什么此代码第一次打开对话框时出现 findDOMNode 警告?
- unity3d - 新 Unity 3D 上奇怪的默认阴影
- php - 安装 laravel medialibrary 8.1 时出错
- java - 如何创建骆驼 webcocket 客户端?推荐一些参考例子
- java - Java中Spring-Boot微服务的计算监控指标
- mapbox - 具有自动和音高的 Mapbox 静态图像
- python - 从python中的dict列表中删除重复项
- apache-kafka - KTable suppress(Suppressed.untilTimeLimit()) 不包含指定时间的记录
- java - 如何在 bukkit/插件编程中修复此错误:java:cannot find symbol constructor CommandExecute()