@maikttt

Как использовать callback-и из js в kotlin в react-native которых можно вызвать много раз?

Начал делать приложение для Android на ReacNative, которая отображает данные полученные с неким устройством. Взаимодействие с устройством осуществляется через SDK для которого нужно определить класс с методами которые будут выполнятся когда происходит некоторые event-ы. Код ниже работает но callback в kotlin можно вызвать только один раз. Как передать эти методы из js чтобы выполнилить каждый раз?
JS:
// ...
function init() {
  Device.onStatusChange((status) => {
    console.log(`Status changed to: ${status}`);
  });
  Device.init();
}
// ...


Kotlin:
import com.facebook.react.bridge.Callback

class Device {
  var statusCallback: Callback? = null
  var statusChagne

  @ReactMethod
  init() {
    Hub.getInstance().addListener(listener())
    Hub.getInstance().connect()
  }

  fun listener(): DeviceListener {
    return object: AbstractDeviceListener() {
      override public fun onStatusChange(status: String, timestamp: Long) {
        statusCallback?.invoke(status)
      }
      // ...
    }
  }

  @ReactMethod
  fun onStatusChange(callback: Callback) {
    statusCallback = callback;
  }
}
  • Вопрос задан
  • 50 просмотров
Пригласить эксперта
Ответы на вопрос 1
@LukyanovPA
Android Developer
Наверное вместо
fun listener(): DeviceListener {
return object: AbstractDeviceListener() {
override public fun onStatusChange(status: String, timestamp: Long) {
statusCallback?.invoke(status)
}
// ...
}
}

вот это

val listener = object : AbstractDeviceListener() {
override public fun onStatusChange(status: String, timestamp: Long) {
statusCallback?.invoke(status)
}
// ...
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы