首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在java中截取事件

如何在java中截取事件
EN

Stack Overflow用户
提问于 2018-09-12 03:34:41
回答 1查看 323关注 0票数 3

我正在用react native开发一个应用程序,我实现了一个将java事件发送到js的模块,这样它就可以在react native中被监听了。

有没有办法在另一个java文件中监听它?

以下是示例事件:

代码语言:javascript
复制
            int score = 10;

            sendEvent("SCORE", score);

该模块本身如下所示:

代码语言:javascript
复制
// 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中使用listener来读取它,但是不知道如何在另一个java文件中读取它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-12 05:51:31

最好的方法可能是将结果和事件名称存储为java变量,这样您就可以从其他地方轻松地访问它。

要做的第一件事是创建一个可从另一个类(public)获得的java变量,并给它一个默认值以避免任何问题。

代码语言:javascript
复制
//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方法的类的真实名称:

代码语言:javascript
复制
int resultFromOtherClass_result = classWithEvent.myValueResult;
string resultFromOtherClass_name = classWithEvent.myValueName;

java:此事件已经在进行侦听,因此不需要在另一个类中侦听。相反,您可以简单地调用另一个类中的方法,有点像这样,这样每当sendEvent发生时,您就可以在那个类中对它做任何您想做的事情:

代码语言:javascript
复制
myOtherClass.doEvent(eventName, result);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52283050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档