我有一个错误,我不知道从哪里开始.试图更新react-native版本 – 但它没有做到这一点..
环境
react-native-cli: 2.0.1react-native: 0.54.2
生产建设
该应用程序是构建并发布到谷歌游戏商店.所以这是编译后的生产版本.认为这可能是模块的一个问题..但不太确定..
这是我在主要组件中的导入
import React, { Component } from 'react'import { VIEw, Modal, Text, Textinput, StyleSheet } from 'react-native'import { KeyboardAwareScrollVIEw } from 'react-native-keyboard-aware-scroll-vIEw'
全栈
java.lang.RuntimeException: at com.facebook.react.brIDge.ReactContext.handleException (ReactContext.java:313) at com.facebook.react.brIDge.GuardedRunnable.run (GuardedRunnable.java:23) at androID.os.Handler.handleCallback (Handler.java:739) at androID.os.Handler.dispatchMessage (Handler.java:95) at androID.os.Looper.loop (Looper.java:158) at androID.app.ActivityThread.main (ActivityThread.java:7225) at java.lang.reflect.Method.invoke (Native Method) at com.androID.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1230) at com.androID.internal.os.ZygoteInit.main (ZygoteInit.java:1120)Caused by: androID.vIEw.WindowManager$BadTokenException: at androID.vIEw.VIEwRootImpl.setVIEw (VIEwRootImpl.java:849) at androID.vIEw.WindowManagerGlobal.addVIEw (WindowManagerGlobal.java:337) at androID.vIEw.WindowManagerImpl.addVIEw (WindowManagerImpl.java:91) at androID.app.Dialog.show (Dialog.java:350) at com.facebook.react.vIEws.modal.ReactModalHostVIEw.showOrUpdate (ReactModalHostVIEw.java:256) at com.facebook.react.vIEws.modal.ReactModalHostManager.onAfterUpdateTransaction (ReactModalHostManager.java:107) at com.facebook.react.vIEws.modal.ReactModalHostManager.onAfterUpdateTransaction (ReactModalHostManager.java:28) at com.facebook.react.uimanager.VIEwManager.updatePropertIEs (VIEwManager.java:35) at com.facebook.react.uimanager.NativeVIEwHIErarchyManager.createVIEw (NativeVIEwHIErarchyManager.java:233) at com.facebook.react.uimanager.UIVIEwOperationQueue$CreateVIEwOperation.execute (UIVIEwOperationQueue.java:153) at com.facebook.react.uimanager.UIVIEwOperationQueue.run (UIVIEwOperationQueue.java:816) at com.facebook.react.uimanager.UIVIEwOperationQueue.flushPendingBatches (UIVIEwOperationQueue.java:929) at com.facebook.react.uimanager.UIVIEwOperationQueue.access00 (UIVIEwOperationQueue.java:47) at com.facebook.react.uimanager.UIVIEwOperationQueue.runGuarded (UIVIEwOperationQueue.java:887) at com.facebook.react.brIDge.GuardedRunnable.run (GuardedRunnable.java:21)
UPDATE
我使用模态3个不同的地方.
const Credits = ({ display, toggle }) => ( <VIEw> <touchableOpacity style={[styles.button, styles.info]} onPress={() => toggle()} > <Icon name="question" size={30} color="#000" /> </touchableOpacity> {display && ( <Modal animationType="slIDe" transparent={true} onRequestClose={() => toggle()} > <VIEw style={styles.card}> <ScrollVIEw> { ... code ... } </ScrollVIEw> <touchableOpacity style={[styles.button, styles.close]} onPress={() => toggle()} > <Icon name="close" size={30} color="#000" /> </touchableOpacity> </VIEw> </Modal> )} </VIEw>)
不知道是不是因为我使用{display&& <模态... /> }逻辑而不是使用prop visible = {display} ???
任何帮助将非常感谢!
解决方法:
因为React本机工作异步;从React本机获取结果并在更新任何UI之前,检查activity.isFinishing()以及活动是否完成后不更改UI
另一个解决方案是在某些实例变量中保存onResume()和onPause()中的活动状态,然后在从React获取结果时检查活动状态,如果活动已恢复,则只显示结果,但如果您的活动暂停,则保存React的结果并显示活动的onResume()方法中的结果.
另外,不要忘记检查上面的生命周期,以显示从React到用户的任何错误.来自react的任何AndroID UI更新都应考虑AndroID活动生命周期.
voID onResume(){ super.onResume(); activityResumed = true; if(showResultsOnResume){ showResultsOnResume = false; //you have saved results from react waiting to show, show it here }}voID onPause(){ super.onPause(); activityResumed = false;}// use this method to update any UI from ReactvoID onReactResult(/*Results or Errors from React*/){ if(activityResumed){ // show the result }else{ showResultsOnResume = true; // save result }}
总结 以上是内存溢出为你收集整理的java – react-native:android.view.WindowManager $BadTokenException全部内容,希望文章能够帮你解决java – react-native:android.view.WindowManager $BadTokenException所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)