【问题标题】:Where to store string values?In strings.xml or in constants class?在哪里存储字符串值?在 strings.xml 或常量类中?
【发布时间】:2014-08-21 13:49:10
【问题描述】:

在android中,我们可以将字符串值存储在strings.xml文件或一些常量类中作为静态最终变量。在某些情况下是否有理由选择一个而不是另一个?

【问题讨论】:

    标签: android


    【解决方案1】:

    简而言之:

    在代码中的使用价值:始终使用常量类。优点:代码保持集成,您的包可以在其他项目/上下文中使用。您不能使用 string.xml 执行此操作,因为它不与您的包裹一起运输。

    在 UI 中显示的值: 使用 string.xml。优点:可以使用本地化来显示翻译文本。

    当这两种选择都可行时,可能会出现某些情况。然后,您必须决定其相关值的存储位置。

    【讨论】:

      【解决方案2】:

      作为一般规则,请使用strings.xml,因为 android 使用该 XML 来将您的应用翻译成不同的语言,而对于硬编码的字符串则无法做到这一点。

      official android guide on localization 说如下;

      将所有字符串移动到strings.xml中

      在构建应用时,请记住不要对任何字符串进行硬编码。反而 在默认的 strings.xml 文件中将所有字符串声明为资源 这使得更新和本地化变得容易。 strings.xml 中的字符串 文件可以被提取、翻译并重新集成到您的应用程序中 (使用适当的限定符)而不对已编译的代码进行任何更改。

      如果您生成带有文本的图像,请将这些字符串放在 strings.xml 中 好吧,翻译后重新生成图片。

      不会以任何方式显示给用户的字符串不需要存储在 XML 中,因为它们永远不需要翻译,而且您可能不希望 android 系统以您可能的方式篡改它们在运行时不知道。

      【讨论】:

        【解决方案3】:

        如果字符串值用于在Strings.xml 中的 UI 存储中显示,否则将其保留在代码中。可以有 JSONTags,不同 api/Thirdparty 库的 Key。这些东西应该保存在代码本身中。

        【讨论】:

          【解决方案4】:

          strings.xml 用于本地化,需要上下文来检索String 的内容。如果您需要在不同的类中访问 java 常量,您可以使用 public static final String 成员。如果字符串是给用户的消息,你应该使用 strings.xml

          【讨论】:

          • +1 表示您需要 context 来检索 strings.xml 字符串的内容
          • 如果我想将一个字符串发送到电子邮件应用程序的消息正文,我可以将这些字符串存储在上述任何位置。不是吗?或者 srings.xml 应该得到优先考虑?
          • strings.xml 会更好
          【解决方案5】:

          如果字符串代表用户可读的文本,并且可能被翻译成其他语言(按钮名称、标签、通知/错误消息等),那么它们应该在 strings.xml 中(实际上,它可以是任何您喜欢的文件名,而不仅仅是“字符串”)。 如果字符串是应用程序内部使用的某个常量(捆绑/意图键、片段标签等),则应在类中声明它们

          【讨论】:

          • 如果我想将一个字符串发送到电子邮件应用程序的消息正文,我可以将这些字符串存储在上述任何位置。不是吗?或者 srings.xml 应该得到优先考虑?
          • srings.xml 应该得到偏好
          【解决方案6】:

          这取决于,如果它是一个将被翻译或显示给用户的文本字符串,那么为了118n 的缘故,您需要输入strings.xml

          但是,如果字符串类似于服务器 url 或 api 代码,那么您需要将它们作为 public static final String 存储在代码中

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-03-18
            • 1970-01-01
            相关资源
            最近更新 更多