我想在项目中使用蓝牙打印机,但出现此错误
lateinit property mmDevice has been not initialized
这是我的代码
lateinit var device:String
lateinit var mBluetoothAdapter: BluetoothAdapter
lateinit var mmSocket: BluetoothSocket
lateinit var mmDevice: BluetoothDevice
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_penjualan_cetak)
device = Function().getShared("printer","",this)
try {
findBT()
} catch (e: Exception) {
}
}
fun findBT(){
try{
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter()
val paireddevice = mBluetoothAdapter.bondedDevices
if(paireddevice.size > 0){
ePrinter.setText("Printer Belum Dipilih")
for (device:BluetoothDevice in paireddevice) {
if (device.name == this.device) {
// this is the error come from
mmDevice = device
break
}
}
}
}catch (e:Exception){
e.printStackTrace()
}
}
我如何在koltin中初始化蓝牙设备?我尝试了一些解决方案,但它不起作用
答案 0 :(得分:0)
我认为,您并未发布所有代码,而是将我们指向发生错误的错误行。仅当您尝试访问未初始化的lateinit属性时,才会发生此错误。我可以想象,您的findBT方法找不到任何可挂载的设备,因此您的mmDevice没有初始化。
仅当您100%确定该属性将在首次使用之前初始化时,才应使用lateinit。搜索BT设备-并非如此。因此,我建议您更改该行:
lateinit var mmDevice: BluetoothDevice
到该行:
var mmDevice: BluetoothDevice? = null
,并在代码中对其进行null检查或安全调用。