Как я могу изменить элементы интерфейса Fragment asyonchrounsly с подпиской Reactive Bluetooth? - PullRequest
0 голосов
/ 13 марта 2019

Я не получаю никаких ошибок или сбоев из следующего кода, но Button и TextView просто не меняются, как я ожидаю.Я подписываюсь на внешнее устройство Bluetooth и могу успешно отслеживать изменения состояния при подключении и отключении.Логи показывают это (см. Ниже).Я инициирую подписку в моем MainActivity, но Button и TextView находятся в отдельном фрагменте.Как я могу сделать эту работу?

/* Buttons */
val homeFragment = HomeFragment.newInstance()

/* Buttons */
val enableBluetooth = homeFragment.view ? .findViewById < TextView > (R.id.shotCountTextView)
val deviceConnected = homeFragment.view ? .findViewById < Button > (R.id.deviceConnected)

/* Monitor Connection State Changes */
rxBleDevice.observeConnectionStateChanges()
 .subscribe({
  connectionState ->
  Log.d("Connection State: ", "$connectionState")

  if (connectionState == RxBleConnection.RxBleConnectionState.CONNECTED) { // fixed the check

   runOnUiThread {

    enableBluetooth ? .setBackgroundResource(R.drawable.bluetooth_on) // Change image
    deviceConnected ? .setText(R.string.connected_to_hooplight) // Changed text

   }

  } else {

   runOnUiThread {

    enableBluetooth ? .setBackgroundResource(R.drawable.bluetooth_off) // Change image
    deviceConnected ? .setText(R.string.connect_to_hooplight) // Changed text

   }
  }
 }, {
  throwable -> Log.d("Error: ", throwable.toString())
 })


}, {
 throwable ->
 // Handle an error here.
 println("Scan Error: $throwable")
}

Logcat:

D/BluetoothGatt: connect() - device: 34:81:F4:3C:2D:7B, auto: true
    registerApp()
    registerApp() - UUID=98485e50-4fb3-475c-beb1-22609fe118fb
D/BluetoothGatt: onClientRegistered() - status=0 clientIf=9
D/BluetoothGatt: onClientConnectionState() - status=0 clientIf=9 device=34:81:F4:3C:2D:7B
D/Connection State:: RxBleConnectionState{CONNECTED}
    RxBleConnectionState{CONNECTED}
D/establishConnection:: Connection established
...