Как перехватить событие в Java - PullRequest
0 голосов
/ 11 сентября 2018

Я работаю над приложением на реагировать нативно, и я реализовал модуль, который отправляет java-событие js, чтобы его можно было прослушивать в реагировать нативно.

Есть ли способ прослушать его в другом файле Java?

Вот пример события:

            int score = 10;

            sendEvent("SCORE", score);

Сам модуль выглядит следующим образом:

// Called to emit events to event listeners in JS
private void sendEvent(String eventName, int result) {
    getReactApplicationContext()
            .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
            .emit(eventName, result);

Я могу читать его с помощью слушателя в js, но понятия не имею, как читать его в другом файле Java.

1 Ответ

0 голосов
/ 12 сентября 2018

Лучший способ сделать это, вероятно, сохранить результат и имя события как переменную java, тогда вы можете легко получить к нему доступ из другого места.

Первое, что нужно сделать, это создать переменную java, которая будет доступна из другого класса (public), и присвоить ей значение по умолчанию, чтобы избежать каких-либо проблем.

//Create Java variables
public static int myValueResult = 0;
public static string myValueName = "";

// Called to emit events to event listeners in JS
private void sendEvent(String eventName, int result) {
getReactApplicationContext()
        //JS Method
        .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
        .emit(eventName, result);

        //Add an extra line that saves the result and eventName to the Java variables we made 
        myValueResult = result;
        myValueName = eventName;
}

Теперь вы можетеполучить результат из другого Java-класса, как показано ниже.Просто замените classWithEvent реальным именем класса, содержащего ваш sendEvent метод:

int resultFromOtherClass_result = classWithEvent.myValueResult;
string resultFromOtherClass_name = classWithEvent.myValueName;

Редактировать: Это событие уже выполняет прослушивание, поэтомунет необходимости слушать в другом классе Java.Вместо этого вы можете просто вызвать метод в другом классе, примерно так, а затем, когда произойдет sendEvent, вы можете делать с ним все, что захотите, в этом классе:

myOtherClass.doEvent(eventName, result);
...