为了账号安全,请及时绑定邮箱和手机立即绑定

如何在java中拦截事件

如何在java中拦截事件

qq_花开花谢_0 2021-09-15 10:39:14
我正在使用 React Native 开发一个应用程序,并且我实现了一个将 Java 事件发送到 js 的模块,以便它可以在 React Native 中收听。有没有办法在另一个java文件中收听它?这是示例事件:            int score = 10;            sendEvent("SCORE", score);模块本身如下所示:// Called to emit events to event listeners in JSprivate void sendEvent(String eventName, int result) {    getReactApplicationContext()            .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)            .emit(eventName, result);我可以用 js 中的监听器读取它,但不知道如何在另一个 java 文件中读取它。
查看完整描述

1 回答

?
米脂

TA贡献1836条经验 获得超3个赞

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


首先要做的是创建一个可从另一个类(公共)获得的 java 变量,并为其提供默认值以避免任何问题。


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


查看完整回答
反对 回复 2021-09-15
  • 1 回答
  • 0 关注
  • 169 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信