Kotlin如何初始化BluetoothDevice

时间:2018-08-06 01:51:24

标签: android bluetooth kotlin kotlin-lateinit

我想在项目中使用蓝牙打印机,但出现此错误

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

1 个答案:

答案 0 :(得分:0)

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

仅当您100%确定该属性将在首次使用之前初始化时,才应使用lateinit。搜索BT设备-并非如此。因此,我建议您更改该行:

lateinit var mmDevice: BluetoothDevice

到该行:

var mmDevice: BluetoothDevice? = null

,并在代码中对其进行null检查或安全调用。