如何关闭Android Studio中Java文件的字符串资源自动替换?
解决Android Studio 3.0.1自动替换R.string引用为硬编码字符串的问题
我之前也碰到过这种闹心的情况——明明写的是return R.string.state_connecting;,Android Studio居然偷偷给换成硬编码字符串,完全打乱了多语言适配的规划。结合你提到的「和XML编辑器无关、之前的方案无效」的情况,可以按以下步骤排查关闭这个自动替换功能:
禁用「Inline Resource Reference」意图功能
这是最可能触发自动替换的元凶:Android Studio的Intentions功能会自动「优化」代码,把资源引用转成硬编码字符串。你可以这样关掉它:- 打开Settings(Windows/Linux快捷键
Ctrl+Alt+S,Mac是Cmd+,) - 导航到Editor > Intentions
- 在搜索框输入
Inline resource reference,找到对应选项后取消勾选。这样AS就不会自动触发这个替换操作了。
- 打开Settings(Windows/Linux快捷键
检查并禁用相关实时模板
有时候默认或自定义的实时模板也会导致这种自动替换:- 在Settings里进入Editor > Live Templates
- 展开Android相关的模板组,查看是否存在输入
R.string.xxx时自动替换成字符串内容的模板。如果找到,右键点击模板选择Disable即可。
关闭对应Lint规则的自动修复
部分Lint规则会提示「替换资源引用为字符串」,并且可能被设置为自动应用修复:- 进入Settings > Editor > Inspections
- 搜索
Replace resource reference with string literal(或类似关键词),找到对应Lint规则后,要么取消勾选「Apply fix automatically」,要么直接禁用该规则。
调整代码补全设置(备选方案)
如果上述方法都无效,可以试试调整代码补全的触发逻辑:- 进入Settings > Editor > General > Code Completion
- 取消勾选「Insert selected variant by typing dot, space, etc.」,避免补全时自动替换成字符串。
完成这些设置后,重新打开你的Java文件,再输入return R.string.state_connecting;应该就不会被自动替换了。
内容的提问来源于stack exchange,提问作者prog mob
相关产品推荐
相关产品推荐

