Iは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
が正しいインスタンスを指すようになりますが、それは私の言葉を取ることはありませんと仮定しても安全だと推定されます。