Экземпляр в сопутствующем объекте
Я не могу получить доступ к 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