android - 如果恢复初始生命周期状态,则需要设置 Activity
问题描述
您好,我正在尝试将 react-native 应用程序集成到我的原生 android 中。我按照步骤提供以下链接
https://facebook.github.io/react-native/docs/integration-with-existing-apps https://medium.com/mindorks/react-native-integration-with-existing-app-f2757c2e672d
这是我的反应活动代码
super.onCreate(savedInstanceState);
mReactRootView = new ReactRootView(this);
mReactInstanceManager = ReactInstanceManager.
builder()
.setApplication(getApplication())
.setBundleAssetName("index.android.bundle")
.setJSMainModulePath("index.android")
.addPackage(new MainReactPackage())
.setUseDeveloperSupport(BuildConfig.DEBUG)
.setInitialLifecycleState(LifecycleState.RESUMED)
.build();
mReactRootView.startReactApplication(mReactInstanceManager, "AwesomeProject", null);
setContentView(mReactRootView);
但是当我的反应活动启动时我收到以下错误
java.lang.AssertionError: Activity needs to be set if initial lifecycle state is resumed
at com.facebook.infer.annotation.Assertions.assertNotNull(Assertions.java:35)
at com.facebook.react.ReactInstanceManagerBuilder.build(ReactInstanceManagerBuilder.java:250)
at com.skw.android_react_2.MyReactActivity.onCreate(MyReactActivity.java:35)
at android.app.Activity.performCreate(Activity.java:7383)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1218)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3256)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3411)
at android.app.ActivityThread.-wrap12(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1994)
at android.os.Handler.dispatchMessage(Handler.java:108)
at android.os.Looper.loop(Looper.java:166)
at android.app.ActivityThread.main(ActivityThread.java:7529)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)
如何解决这个问题?
解决方案
您可以通过两种方式解决此问题。要么设置活动:
mReactInstanceManager = ReactInstanceManager.builder()
.setApplication(getApplication())
.setCurrentActivity(this) // <== *** HERE ***
.setBundleAssetName("index.android.bundle")
.setJSMainModulePath("index.android")
.addPackage(new MainReactPackage())
.setUseDeveloperSupport(BuildConfig.DEBUG)
.setInitialLifecycleState(LifecycleState.RESUMED)
.build();
...或将初始生命周期状态更改为以下内容LifecycleState.RESUMED
:
mReactInstanceManager = ReactInstanceManager.builder()
.setApplication(getApplication())
.setBundleAssetName("index.android.bundle")
.setJSMainModulePath("index.android")
.addPackage(new MainReactPackage())
.setUseDeveloperSupport(BuildConfig.DEBUG)
.setInitialLifecycleState(LifecycleState.BEFORE_CREATE) // <== *** HERE ***
.build();
推荐阅读
- javascript - 尝试在渲染之外渲染弹出窗口:React Js
- firebase - 如何在 Firebase for web 中更新两个不同的根子节点
- spring - Spring Boot:如何指定不同 schema.sql 文件的执行顺序?
- javascript - 组合固定长度的不同数组
- flutter - Flutter - 如何使用键盘上的推荐词功能
- c# - 在 C# 中使用正文休息 GET 请求
- postgresql - 如何在 postgresql 数据库中应用队列机制?
- python - 如果文件已经打开,则使用 python 关闭 excel 文件
- amazon-web-services - Kinesis CMK 手动轮换 - 我可以每月手动分配别名来流式传输和轮换密钥吗?
- flutter - Flutter ListView.builder 和 Wrap 小部件