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

跨包调用Style资源报错:如何通过代码使用其他包的Style?

跨包引用Style的问题及解决方案

直接通过R.style.style_from_different_package跨包调用Style会报symbol not found错误,原因是每个Android模块(包)的R类是独立编译生成的,其他模块无法直接访问非自身模块R类中的资源ID。以下是可行的解决方法:

  • 将Style所在模块设为依赖库
    如果你的Style定义在一个独立的Android Library模块中,先在需要引用的模块的build.gradle(Module级)里添加该库的依赖:

    dependencies {
        implementation project(':your-style-module-name')
    }
    

    依赖完成后,引用时必须指定Style所在模块的完整包名,比如:

    textView.setTextAppearance(com.your.style.module.package.R.style.style_from_different_package);
    
  • 迁移Style到公共资源目录
    若两个模块同属一个项目,可以把通用Style移到项目的公共资源模块(或主模块的res/values目录),这样所有模块都能直接通过R.style.style_from_different_package引用,无需额外处理。

  • 动态获取资源ID(不推荐)
    可以通过getResources().getIdentifier()动态查找Style的ID,避免直接依赖模块,但这种方式维护性差,资源名或包名变更时容易出错:

    int styleResId = getResources().getIdentifier(
        "style_from_different_package", 
        "style", 
        "com.your.style.package"
    );
    if (styleResId != 0) {
        textView.setTextAppearance(styleResId);
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 20:15:33