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

Android:getString()与stringResource()的区别及适用场景咨询

getString() 和 stringResource():Android字符串资源获取的区别
  • 适用场景完全不同

    • getString()是传统View体系的经典方法,只要能拿到Context(比如Activity、Fragment内部,或者通过getApplicationContext())就能调用,例如在Activity里写getString(R.string.app_name)。
    • stringResource()是Jetpack Compose专属API,只能在Composable函数内部使用,无需手动传递Context,Compose会自动关联当前的资源上下文。
  • 为什么要替换?

    • 旧版Android Studio在生成Compose代码模板时,可能错误生成getString()写法,换成stringResource()是遵循Compose的最佳实践——不用额外获取LocalContext.current传参,代码更简洁,也更贴合Compose的声明式编程风格。
    • 这是不同技术体系的API适配,Compose有独立的资源获取逻辑,使用专属API能避免不必要的Context传递,减少冗余代码和潜在的错误。
  • 能不能互换?

    • 非Compose场景(比如传统XML布局对应的Activity/Fragment):只能用getString(),stringResource()属于Compose生态,无法在这类场景调用。
    • Compose场景里:理论上可以用LocalContext.current.getString(...)替代stringResource(),但完全没必要——stringResource()写法更简洁,是官方推荐的Compose资源获取方式,更符合Compose的设计逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 21:57:10