2

我想在我的项目中使用蓝牙打印机,但我收到了这个错误

  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 中初始化蓝牙设备?,我尝试了一些解决方案,但它不起作用

4

1 回答 1

0

我认为,您没有发布所有代码并将我们指向发生错误的错误行。仅当您尝试访问未初始化的 lateinit 属性时才会发生此错误。我可以想象,你的 findBT 方法没有找到任何合适的设备,所以你的 mmDevice 没有初始化。

只有在 100% 确定该属性将在首次使用之前初始化时,才应使用 lateinit。搜索 BT 设备 - 不是那种情况。所以我建议你改变那行:

lateinit var mmDevice: BluetoothDevice

到那一行:

var mmDevice: BluetoothDevice? = null

并在您的代码中对其使用空值检查或安全调用。

于 2018-11-20T13:25:45.623 回答