Como evento de interceptação em java

Vasyl:

Eu estou trabalhando em um aplicativo em reagir nativa e eu implementado um módulo que envia evento java para js para que ele possa ser ouvido em reagir nativa.

Existe alguma maneira de ouvir-lo em outro arquivo java?

Aqui está o exemplo de eventos:

            int score = 10;

            sendEvent("SCORE", score);

O módulo em si parece como abaixo:

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

Eu posso lê-lo com ouvinte em js, mas não tenho idéia como lê-lo em outro arquivo java.

sorifiend:

A melhor maneira de fazer isso é provavelmente para armazenar o nome do resultado e do evento como uma variável java, então você pode facilmente aceder a partir de outro lugar.

A primeira coisa a fazer é fazer uma variável java que estará disponível a partir de outra classe (público) e dar-lhe um valor padrão para evitar quaisquer problemas.

//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;
}

Agora você pode obter o resultado de outra classe Java como abaixo. Basta substituir classWithEventcom o nome real da classe que contém o sendEventmétodo:

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

Edit: Este evento já está fazendo a escuta, por isso não há necessidade de ouvir em outra classe java. Em vez disso, você pode simplesmente chamar um método em outra classe, um pouco como isso, então sempre que o sendEvent acontece, você pode fazer o que quiser com ele nessa classe:

myOtherClass.doEvent(eventName, result);

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=218448&siteId=1
Recomendado
Clasificación