Android Studio出现Type mismatch错误 Kotlin蓝牙设备列表开发求助


问题排查&修复方案
以下是蓝牙列表开发场景下Type mismatch(类型不匹配)报错的常见原因和对应修复方案,按优先级逐一排查即可:
- 可空/非空类型不匹配
蓝牙扫描回调返回的BluetoothDevice实例默认可空,如果你声明的设备列表变量是MutableList<BluetoothDevice>(元素非可空),直接添加元素就会触发类型不匹配。
修复示例:// 声明存储非空蓝牙设备的列表 val deviceList: MutableList<BluetoothDevice> = mutableListOf() // 添加元素前先做非空校验 scannedDevice?.let { safeDevice -> deviceList.add(safeDevice) } - 集合类型不匹配
给列表Adapter传参时,如果你传入的是List<BluetoothDevice>类型,但Adapter构造函数要求的是ArrayList<BluetoothDevice>类型,也会触发报错。
修复方案:统一两边的类型声明,或者做显式类型转换:val deviceAdapter = DeviceAdapter(deviceList as ArrayList<BluetoothDevice>) - API版本不匹配
检查你项目的compileSdk、targetSdk版本和教程使用的版本是否一致,Android 12及以上版本的蓝牙相关API返回类型、入参要求都有调整,即便代码写法完全一致也可能出现类型不匹配问题,对齐SDK版本即可解决。 - 权限回调类型不匹配
动态申请蓝牙权限时,如果回调参数的类型和官方要求的Map<String, Boolean>不一致,也会触发该报错,直接对齐官方文档的回调声明即可。
内容的提问来源于stack exchange,提问作者ipipoc
相关产品推荐
相关产品推荐

