java - 在 Android 中,是否有理由为不打算翻译的字符串使用字符串资源?

标签 java android android-resources

我想知道在 Android 代码中使用 java 文件中定义的字符串有什么缺点。

我喜欢使用普通的旧 Java 字符串来表示不可见的字符串,例如我正在解析的 XML 文档中的名称,或包的键。将所有这些东西保留在使用它们的 java 文件中而不是将它们移出到 XML 文件中并使代码更复杂似乎是个好主意。

然而,我看到许多 Android 代码示例似乎将每个字符串都放入资源文件中。

在 java 文件中包含字符串有什么问题?人们不这样做的原因是什么?我一直在我的应用程序中这样做,到目前为止还没有发现任何问题。

请注意,我知道 XML 文件对于需要翻译的内容具有重要意义。这个问题适用于字符串保持不变的情况。

让我试着把这个问题弄清楚:

有没有什么原因除了:

  • 因为它是标准/最佳实践等 - 我的问题基本上是:为什么它是最佳实践,仅仅是因为 i8n,还是有其他原因?
  • 因为它允许您使用资源框架进行翻译、设备相关的字符串等。
  • 因为它允许您使用非 ASCII 字符。

最佳答案

您问题的简单答案是将所有字符串放入资源的标准。还有很多原因表明,如果您将字符串保存在 xml/java 文件中,则必须为单个字符串更新这些文件中的每个引用。

例如。如果您想将 5 个不同文件中使用的“确定”更改为“确认”,您必须更改所有这 5 个文件,但对于字符串资源,您只需更新一个文件 string.xml。

编辑

请在下面找到我们应该使用 String.xml 的一些原因

1) 将单个引用更新为多次出现。根据 @treesAreEverywhere 的说法,它可以使用 public static String 来完成,但它会在应用程序启动时占用内存,直到应用程序关闭。但是用String.xml写的String会在使用的时候加载。

2) 多语言支持。您可以创建多个语言资源文件夹以支持您的多语言应用程序,这样使用 Locale 更改的语言将由操作系统在运行时根据语言资源文件夹动态维护。

3) 请查看Localization为您提供有关使用 string.xml 的更多信息的文档

4) 字符串不会使您的应用程序代码困惑,使其清晰且易于维护。

这是一种与任何其他语言一样的编码标准。但是如果你愿意,你可以忽略它,并且可以在代码中使用公共(public)静态字符串变量创建你的代码。使用 string.xml 不是强制性的,但使用它是一种很好的编码习惯。好的做法是用包含单个语句的括号关闭 if block ,而不是保持原样。

if(条件){ 语句; } 而不是 if(condition) 语句;

关于java - 在 Android 中,是否有理由为不打算翻译的字符串使用字符串资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32587336/

相关文章:

android - 如何在 ViewPager Adapter 中获取字符串资源?

Android XML 百分比符号

java - 文本未附加到新文件中以尝试制作文本文件操纵器

java - Excel Java - 将一行单元格值传递到 ArrayList

java - 仅发布适用于 3.2+ 平板电脑和 2.2+ 手机的应用程序?

android - Mongoose 时间戳和纪元转换为 Date() 的问题

android - 是否可以通过编程方式更改配置 ui 模式?

Java 客户端 POST 到 php 脚本 - 空 $_POST

java - CXF拦截器阶段用于清理MDC

android - 如何在 SD 卡上备份和恢复 SqliteDatabase、SharedPreferences - Android