如何在java中拦截事件

我正在使用 React Native 开发一个应用程序,并且我实现了一个将 Java 事件发送到 js 的模块,以便它可以在 React Native 中收听。


有没有办法在另一个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 文件中读取它。


qq_花开花谢_0
浏览 170回答 1
1回答

米脂

最好的方法可能是将结果和事件名称存储为 java 变量,然后您可以轻松地从其他地方访问它。首先要做的是创建一个可从另一个类(公共)获得的 java 变量,并为其提供默认值以避免任何问题。//Create Java variablespublic static int myValueResult = 0;public static string myValueName = "";// Called to emit events to event listeners in JSprivate 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);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java