You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复java.lang.String无法转换为com.facebook.react.bridge.ReadableArray错误?

React Native原生Image组件Android端类型转换错误修复

问题代码

ViewManager.java

// setting the source of the ImageView

@ReactProp(name = "src")
public void setSrc(ReactImageView view, @Nullable ReadableArray sources) {
    view.setSource(sources);
}

App.tsx

<POCImageView src={'https://en.wikipedia.org/wiki/Image#/media/File:Image_created_with_a_mobile_phone.png'} />

报错信息

java.lang.string cannot be cast to com.facebook.react.bridge.readableArray

错误原因

参数类型不匹配:

  • Android原生端setSrc方法声明接收ReadableArray(数组类型)
  • React Native JS端传入的是字符串类型URL,导致Java层强转时抛出类型转换异常。

修复方案

方案1:修改JS端,传递数组格式参数

按照React Native图片组件的标准格式,将URL包装为含uri字段的对象数组:

<POCImageView 
  src={[{ uri: 'https://en.wikipedia.org/wiki/Image#/media/File:Image_created_with_a_mobile_phone.png' }]} 
/>

方案2:修改Android原生端,兼容字符串参数

修改ViewManager的setSrc方法,同时支持字符串和数组类型,自动将字符串转为符合要求的数组格式:

@ReactProp(name = "src")
public void setSrc(ReactImageView view, @Nullable Object src) {
    if (src instanceof String) {
        WritableArray sources = Arguments.createArray();
        WritableMap sourceMap = Arguments.createMap();
        sourceMap.putString("uri", (String) src);
        sources.pushMap(sourceMap);
        view.setSource(sources);
    } else if (src instanceof ReadableArray) {
        view.setSource((ReadableArray) src);
    }
}

内容的提问来源于stack exchange,提问作者AMAL MOHAN N

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 13:40:59