【发布时间】:2014-08-21 13:49:10
【问题描述】:
在android中,我们可以将字符串值存储在strings.xml文件或一些常量类中作为静态最终变量。在某些情况下是否有理由选择一个而不是另一个?
【问题讨论】:
标签: android
在android中,我们可以将字符串值存储在strings.xml文件或一些常量类中作为静态最终变量。在某些情况下是否有理由选择一个而不是另一个?
【问题讨论】:
标签: android
简而言之:
在代码中的使用价值:始终使用常量类。优点:代码保持集成,您的包可以在其他项目/上下文中使用。您不能使用 string.xml 执行此操作,因为它不与您的包裹一起运输。
在 UI 中显示的值: 使用 string.xml。优点:可以使用本地化来显示翻译文本。
当这两种选择都可行时,可能会出现某些情况。然后,您必须决定其相关值的存储位置。
【讨论】:
作为一般规则,请使用strings.xml,因为 android 使用该 XML 来将您的应用翻译成不同的语言,而对于硬编码的字符串则无法做到这一点。
official android guide on localization 说如下;
将所有字符串移动到strings.xml中
在构建应用时,请记住不要对任何字符串进行硬编码。反而 在默认的 strings.xml 文件中将所有字符串声明为资源 这使得更新和本地化变得容易。 strings.xml 中的字符串 文件可以被提取、翻译并重新集成到您的应用程序中 (使用适当的限定符)而不对已编译的代码进行任何更改。
如果您生成带有文本的图像,请将这些字符串放在 strings.xml 中 好吧,翻译后重新生成图片。
不会以任何方式显示给用户的字符串不需要存储在 XML 中,因为它们永远不需要翻译,而且您可能不希望 android 系统以您可能的方式篡改它们在运行时不知道。
【讨论】:
如果字符串值用于在Strings.xml 中的 UI 存储中显示,否则将其保留在代码中。可以有 JSONTags,不同 api/Thirdparty 库的 Key。这些东西应该保存在代码本身中。
【讨论】:
strings.xml 用于本地化,需要上下文来检索String 的内容。如果您需要在不同的类中访问 java 常量,您可以使用 public static final String 成员。如果字符串是给用户的消息,你应该使用 strings.xml
【讨论】:
context 来检索 strings.xml 字符串的内容
如果字符串代表用户可读的文本,并且可能被翻译成其他语言(按钮名称、标签、通知/错误消息等),那么它们应该在 strings.xml 中(实际上,它可以是任何您喜欢的文件名,而不仅仅是“字符串”)。 如果字符串是应用程序内部使用的某个常量(捆绑/意图键、片段标签等),则应在类中声明它们
【讨论】:
这取决于,如果它是一个将被翻译或显示给用户的文本字符串,那么为了118n 的缘故,您需要输入strings.xml。
但是,如果字符串类似于服务器 url 或 api 代码,那么您需要将它们作为 public static final String 存储在代码中
【讨论】: