繁体   English   中英

反应导航/本机堆栈不适用于 Android

[英]react-navigation/native-stack not working on Android

我收到以下错误:

E/unknown:ReactNative: Exception in native call
    java.lang.IllegalStateException: In order to use RNScreens components your app's activity need to extend ReactActivity
        at com.swmansion.rnscreens.ScreenContainer.setupFragmentManager(ScreenContainer.kt:169)
        at com.swmansion.rnscreens.ScreenContainer.onAttachedToWindow(ScreenContainer.kt:199)
        at android.view.View.dispatchAttachedToWindow(View.java:21304)
        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:4239)
        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:4246)
        at android.view.ViewGroup.addViewInner(ViewGroup.java:6001)
        at android.view.ViewGroup.addView(ViewGroup.java:5777)
        at android.view.ViewGroup.addView(ViewGroup.java:5717)
        at com.facebook.react.uimanager.ViewGroupManager.addView(ViewGroupManager.java:37)
        at com.facebook.react.uimanager.NativeViewHierarchyManager.manageChildren(NativeViewHierarchyManager.java:533)
        at com.facebook.react.uimanager.UIViewOperationQueue$ManageChildrenOperation.execute(UIViewOperationQueue.java:217)
        at com.facebook.react.uimanager.UIViewOperationQueue$1.run(UIViewOperationQueue.java:915)
        at com.facebook.react.uimanager.UIViewOperationQueue.flushPendingBatches(UIViewOperationQueue.java:1026)
        at com.facebook.react.uimanager.UIViewOperationQueue.access$2600(UIViewOperationQueue.java:47)
        at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(UIViewOperationQueue.java:1086)
        at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.java:29)
        at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(ReactChoreographer.java:175)
        at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(ChoreographerCompat.java:85)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:997)
        at android.view.Choreographer.doCallbacks(Choreographer.java:797)
        at android.view.Choreographer.doFrame(Choreographer.java:728)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:984)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:237)
        at android.app.ActivityThread.main(ActivityThread.java:8167)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)

当我尝试更改时: public class RnActivity extends Activity implements DefaultHardwareBackBtnHandler { to public class RnActivity extends ReactActivity implements DefaultHardwareBackBtnHandler { ,正如错误提示的那样,我收到一个新错误:

E/mk_d : Utils: Error: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.rn_management.RnActivity}: java.lang.ClassCastException: com.android.Application cannot be cast to com.facebook.react.ReactApplication
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3654)

当我从我的 RN 包中删除 react-navigation/native-stack 时,一切正常。 此外,我收到以下错误(是否相关?): E/ThemeUtils: View class com.facebook.react.views.text.ReactTextView is and AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant)

您使用的是旧版本的 React Native 吗? 检查您的android/app/src/main/java/com/(your app)/MainActivity.java文件并更改第一个 class 行以扩展 ReactActivity(如果它还没有)-

public class MainActivity extends ReactActivity {
  ...

那应该满足你得到的错误 - ReactActivity 还扩展了一个兼容性 class所以它也可能会解决你的其他问题

React-native-screens 是 react-navigation 依赖项之一,因此您需要使用它才能使导航正常工作。 使用 ReactActivity 扩展您的 Activity 并在原生 Android 代码中创建或编辑您的应用程序 class:

class YourApplication : Application(), ReactApplication, LifecycleObserver {...}

如果您想将 react-native 集成到现有应用程序中并且不想实施 ReactApplication 和 ReactActivity,此链接https://reactnative.dev/docs/integration-with-existing-apps很有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM