Экземпляр в сопутствующем объекте

Я не могу получить доступ к var mBleWrapper: BleWrapper? = ноль в других видах деятельности. Существует предопределенный интерфейс Java под названием BleWrapperUiCallbacks, который, как я подозреваю, содержит необходимые мне функции и класс Java BleWrapper.

Я попробовал объект-компаньон Kotlin, который заменяет синглтон Java, но мне нужно было бы установить инициализированный BleWrapper как объект-компаньон, и это не совсем возможно, потому что экземпляр BleWrapper создан так:

class BLEActivity : AppCompatActivity() {

     companion object {
     var mBleWrapper: BleWrapper? = null
 //Do something to instantiate the BleWrapper and return the instantiated BleWrapper
 }
 override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.ble_layout)

    initializeBLEWrapper()

    val ble_on = findViewById<FloatingActionButton>(R.id.ble_on)
    ble_on.setOnClickListener {

        val intent = Intent(this, MainActivity::class.java)
        startActivity(intent)
        gatt = mBleWrapper?.getGatt()!!
        c = gatt.getService(NORDIC_UART).getCharacteristic(NORDIC_UART_TX)
        val testVal = "a"
        val bytes = testVal.toByteArray()
        mBleWrapper?.writeDataToCharacteristic(c, bytes)
    }
}

private fun initializeBLEWrapper() {
    mBleWrapper = BleWrapper(this, object : BleWrapperUiCallbacks.Null() {
        override fun uiDeviceFound(
                device: BluetoothDevice,
                rssi: Int,
                record: ByteArray) {              
            if (device.getName() != null) {
                if (device.getName().equals("Adafruit Bluefruit LE") == true) {
                    var status = mBleWrapper!!.connect(device.getAddress().toString())
                    if (status == false) {
                        Log.d("DEBUG", "uiDeviceFound: Connection problem!")
                    } else {
                        Log.d("DEBUG", "Connected")
                        ble_on.isClickable = true
                    }

                }
            }
        }
    }
}

И это "это" относится к текущей деятельности. Вот что в Java решается с синглтоном?! Без этого экземпляра BleWrapper, конечно, всегда будет нулевым. Подключение к бле устройств в промежуток времени. Это logcat: BluetoothGatt: readRssi() И служба, которую мне нужно вызвать, тоже отображается в logcat...

Кто-нибудь может мне помочь? Я немного отчаялся. Я также нашел это: Передача экземпляра объекта между двумя действиями в Kotlin

0 ответов

Другие вопросы по тегам