在android中,我们可以将字符串值存储在strings.xml文件中,或者存储在某些常量类中作为静态最终变量。在某些情况下,是否有某种理由选择其中一种?
答案 0 :(得分:5)
简而言之:
代码中使用的值:始终使用常量class.Advantage:代码保持集成,您的包可以在其他项目/上下文中使用。你不能用string.xml做到这一点,因为它不随你的包运输。
用于在UI中显示的值:使用string.xml。优点:您可以使用本地化来显示翻译文本。
当两个选项都可行时,可能会出现某种情况。然后,您必须确定其相关值的存储位置。
答案 1 :(得分:3)
作为一般规则,使用strings.xml
因为Android使用该XML来支持将您的应用程序翻译成不同的语言,而使用硬编码的字符串无法做到这一点。
official android guide on localization说出以下内容;
将所有字符串移动到strings.xml
在构建应用时,请记住不要对任何字符串进行硬编码。代替 将所有字符串声明为默认strings.xml文件中的资源 这使得更新和本地化变得容易。 strings.xml中的字符串 文件可以被提取,翻译并集成回您的应用程序 (使用适当的限定符),不对编译代码进行任何更改。
如果使用文本生成图像,请将这些字符串放在strings.xml中 好吧,并在翻译后重新生成图像。
不会以任何方式向用户显示的字符串不需要存储在XML中,因为它们永远不需要翻译,并且您可能不希望android系统以您可能的方式篡改它们在运行时不知道。
答案 2 :(得分:2)
如果字符串值用于在Strings.xml
的UI存储中显示,则将其保存在代码中。可以有JSONTags,Key用于不同的api / Thirdparty库。这些东西应该保存在代码本身中。
答案 3 :(得分:2)
strings.xml
它用于本地化,需要一个上下文来检索String
的内容。如果您需要在不同的类中访问java常量,那么您就是public static final String
成员。如果字符串是用户的消息,则应使用strings.xml
答案 4 :(得分:2)
如果字符串表示用户可读的文本,并且可能被翻译成其他语言(按钮,标签,通知/错误消息等的名称),那么它们应该在strings.xml中(实际上,它可以是任何语言)你喜欢的文件名,而不仅仅是“字符串”)。 如果string是内部app中使用的某个常量(bundle / intent键,片段标签等),则应该在类中声明它们
答案 5 :(得分:0)
这取决于,如果它是一个文本字符串,将被翻译或显示给用户,那么对于118n,你需要加入strings.xml
。
但是,如果字符串类似于服务器URL或api代码,那么您将希望将这些字符串存储为public static final String