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

主App向自研库App传递主题主色触发Resources$NotFoundException错误

问题分析与解决

错误原因

你遇到的Resources$NotFoundException核心问题是混淆了颜色整数值(ColorInt)和资源ID的概念:

  • 主App中typedValue.data返回的0xffbb86fc是直接的ARGB颜色值(0xff代表颜色不透明,后六位是RGB分量),属于可以直接用于设置UI颜色的原始数值。
  • 库App里调用res.getColor(primaryColor)时,错误地把这个颜色值当成了Android资源ID(资源ID是指向res目录中定义的颜色资源的整数标识,比如R.color.primary对应的数值),系统找不到对应资源,因此抛出异常。

解决方案

直接使用传递过来的ColorInt即可,无需再通过资源解析:

修正后的库App代码

// 直接接收主App传递的颜色值
val primaryColor = intent.getIntExtra("PRIMARY_COLOR", 0)
// 直接用该值设置UI颜色,示例:
someView.setBackgroundColor(primaryColor)
someTextView.setTextColor(primaryColor)

补充说明

如果场景确实需要传递资源ID(而非直接颜色值),但主App是动态主题,colorPrimary对应的资源ID会随主题变化,此时需要传递R.attr.colorPrimary对应的属性ID,再在库App中结合主App的主题上下文解析,但这种方式实现复杂度更高。而你当前的场景中,主App已经解析出实际颜色值,直接传递并使用这个值是最简单且正确的做法。

内容的提问来源于stack exchange,提问作者Nishant

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 21:05:03