我想使用方法sendEvent(),但是如何获取ReactContext reactContext?
private void sendEvent(ReactContext reactContext,String eventName,@Nullable WritableMap params) {reactContext .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class) .emit(eventName,params);}@H_502_3@
解决方法
我通过在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; } /* [...] */ }@H_502_3@createReactInstanceManager()由ReactActivity的onCreate()方法调用,所以我认为可以安全地假设sReactInstanceManager将指向正确的实例,但不要相信我的话.