Java代码中的硬编码字符串vs @string - Android

Gyr*_*ope 22 string android hardcode

我只是想知道@string在实际的Java代码中使用而不是硬编码字符串的好处/开销是什么...例如:

// To get the string resource:
getActivity.setTitle(getString(R.string.my_string));
Run Code Online (Sandbox Code Playgroud)

这是Actionbar标题,动态创建按钮文本等内容的最佳实践......或者我应该这样做:

// Hardcoded string
getActivity.setTitle("My String");
Run Code Online (Sandbox Code Playgroud)

我知道第一种方式会有更多的开销.只是不确定最佳实践是什么.

KDE*_*DEx 28

如果您没有意识到拥有@string系统的实际意义,请阅读本地化文档.它允许您轻松地在应用程序中查找文本,然后将其翻译.

编辑 感谢Hippo清理它.

无论方法(Strings.xml vs programatically)使用相同值的多个字符串似乎没有任何相关的开销.根据Oracle"所有文字字符串和字符串值常量表达式都被实现",这意味着如果再次使用它,该对象将被重用而不是重新创建.

  • 字符串被实习,所以我认为您的第二条评论不适用. (9认同)

Anh*_*arp 9

将字符串硬编码到布局文件/代码中并不是一种好习惯.您应该将它们添加到字符串资源文件中,然后从布局中引用它们.

原因:

  • 这允许您通过编辑strings.xml文件同时更新所有布局中同一个单词的每个匹配项.
  • 它对于支持多种语言也非常有用,因为单独的strings.xml文件可用于每种受支持的语言.

正如文件所说:

假设您的应用程序的默认语言是英语.同时假设您要本地化应用程序中的法国所有的文字,而大部分的文字在你的应用程序(除了应用程序的标题一切)日本.在这种情况下,您可以创建三个备用strings.xml文件,每个文件都存储在特定于语言环境的资源目录中

我认为这些原因足以推荐@String