我想使用方法sendEvent(),但是如何获取ReactContext reactContext?
private void sendEvent(ReactContext reactContext,String eventName,@Nullable WritableMap params) {reactContext .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class) .emit(eventName,params);}
解决方法
我通过在MainActivity类上保存对ReactInstanceManager的静态引用,并添加了一个public static getContext()方法来暂时解决了这个问题.它感觉不对,但似乎有效.
public final class MainActivity extends ReactActivity { private static ReactInstanceManager sReactInstanceManager = null; /* [...] */ @Override protected ReactInstanceManager createReactInstanceManager() { ReactInstanceManager manager = super.createReactInstanceManager(); sReactInstanceManager = manager; return manager; } public static ReactContext getContext() { if (sReactInstanceManager == null){ // This doesn't seem to happen ... throw new IllegalStateException("Instance manager not available"); } final ReactContext context = sReactInstanceManager.getCurrentReactContext(); if (context == null){ // This really shouldn't happen ... throw new IllegalStateException("React context not available"); } return context; } /* [...] */ }
createReactInstanceManager()由ReactActivity的onCreate()方法调用,所以我认为可以安全地假设sReactInstanceManager将指向正确的实例,但不要相信我的话.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。