我在react Native 0.43.3
中开发了一个项目我仅在iOS中开发和测试所有项目犯了一个错误。(在那里正常工作(
问题是当我尝试生成APK上传到PlayStore,然后在设备中进行测试,我发现了错误:
android.widget.imageview不能施放到android.view.viewgroup
我的主要问题是如何显示错误。位于死者的红屏幕中,我不知道如何在React Native中找到误差发生的线和组件。我认为也许我无法意识到,因为JavaScript代码已经编译。
无论如何,我不知道如何解决问题。
我认为也许是因为我在图像内使用旋转器(显示图像正在加载(,例如:
<View style={[styles.resourceActions]}>
<Image
style={{width: imgWidth, height: imgHeight}}
source={{uri: this.props.imageUrl}}
onLoad = {() => this.setState({ loading: false })}
>
<ActivityIndicator
animating={this.state.loading}
style={[styles.spinner, styles.centering, {marginTop: this.state.loadingMarginTop}]}
size="large"
/>
</Image>
</View>
但我不知道,因为我在许多零件和视图中使用imageView(和fastimage组件(
我的依赖性:
"@remobile/react-native-refresh-infinite-listview": "^1.0.6",
"react": "16.0.0-alpha.6",
"react-native": "0.43.3",
"react-native-camera": "git+https://github.com/lwansbrough/react-native-camera.git",
"react-native-device-info": "^0.10.2",
"react-native-fast-image": "0.0.9",
"react-native-google-analytics-bridge": "^5.0.1",
"react-native-htmlview": "^0.9.0",
"react-native-loading-spinner-overlay": "^0.4.4",
"react-native-material-design": "^0.3.7",
"react-native-modalbox": "^1.3.9",
"react-native-photo-view": "^1.2.0",
"react-native-qrcode-scanner": "0.0.11",
"react-native-qrcode-svg": "^5.0.0",
"react-native-radio-buttons": "^0.14.0",
"react-native-router-flux": "3.38.0",
"react-native-share": "^1.0.20",
"react-native-side-menu": "^0.20.1",
"react-native-svg": "^5.1.7",
"react-native-vector-icons": "^4.0.1"
感谢我的问题中的任何方向
casting (在这种情况下为降落(
使它简单是采用一种特定类型的对象,并"将其变成"另一种从第一个继承的对象类型。铸件不是在编译时检查,而是在运行时进行检查。基本上,您对编译器'相信我,您可以对待此对象,就像是这种类型'。
示例:
Object aSentenceObject = "This is just a regular sentence";
String aSentenceString = (String) aSentenceObject;
现在..还记得我说我在运行时检查它吗?那么,如果不能进行铸造会怎样?在这种情况下,假设:
Object aSentenceObject = "This is just a regular sentence";
int aSentenceString = (int) aSentenceObject;
由于无法将AsentenceObject施放为INT例外。像这样的东西
ClassCastException: java.lang.Object cannot be cast to java.lang.Integer
,但这与您的情况有什么关系?
"使用React Antial,您不会构建"移动Web应用程序",一个" HTML5应用程序", 或"混合应用程序"。您构建了一个真正的移动应用程序 与使用Objective-C或Java构建的应用程序无法区分。反应 本地人使用与常规iOS相同的基本UI构建块, Android应用程序。"
正如在某个时候在官方React本地页面中所说的,您的JavaScript代码以某种方式编译为本地语言(在Android Case,Java中(。
我们可以看到,每个反应本机控制都会与本机相互作用 对应组件。 "我们'被允许'写javaScript,因为React本地向我们展示了 用JavaScript编写的控件。但这总是 由手机实际的本地对应物支撑。反应天然 只需允许桥梁进行两条通信的发生" 正如本文中解释的那样
在本机Android中,图像不能有孩子(例如scrollview或viewgroup do(因此,在将您的JS代码转换为Java的过程中,"翻译机"试图将您的图像视为视图组,因为它有孩子。结果就是您得到的
android.widget.imageview cannot be cast to android.view.viewgroup
结论
如果您删除该嵌套的结构并将活动固定器组件作为图像组件的兄弟姐妹,则应修复
在>本机Android 中,由于ImageView
不会扩展ViewGroup
类,因此我们不能将ImageView
施加到ViewGroup
。实际上,这是不可能的。