刚开始涉足Android,并被告知不应将字符串硬编码为Java,而应将其放入字符串资源文件夹中。
我有现有代码,其中在哈希图中键和值都是字符串。我将如何将字符串放入 xml 并将它们完全从 java 部分中取出?
我应该像这样在字符串资源文件夹中创建一个字符串吗
<string name="hello">Hello.world</string>
hello 是键,world 是值,然后使用 . 解析字符串。作为分隔符?
希望我已经正确解释了自己
刚开始涉足Android,并被告知不应将字符串硬编码为Java,而应将其放入字符串资源文件夹中。
我有现有代码,其中在哈希图中键和值都是字符串。我将如何将字符串放入 xml 并将它们完全从 java 部分中取出?
我应该像这样在字符串资源文件夹中创建一个字符串吗
<string name="hello">Hello.world</string>
hello 是键,world 是值,然后使用 . 解析字符串。作为分隔符?
希望我已经正确解释了自己
您可以在 res 文件夹中定义许多其他资源类型。您可以在此处和此处查看可用的。出于您的目的,一种方法可能是在 res/values/arrays.xml 中定义一个数组:
<resources>
<string-array name="hashmap">
<item>key1</item>
<item>value1</item>
<item>key2</item>
<item>value2</item>
<item>key3</item>
<item>value3</item>
</string-array>
</resources>
并在代码中:
Resources res = this.getResources();
String[] hashmapData = res.getStringArray(R.array.hashmap);
HashMap<String, String> map = new HashMap<String, String>();
for(int i=0; i<hashmapData.length; i=i+2) {
map.put(hashmapData[i], hashmapData[i+1]);
}
这真的取决于你用它做什么。“仅在 XML 中包含字符串”的教条很棒,但它确实适用于您用于用户输出的字符串,因此如果您想翻译应用程序,可以轻松更改它们。如果您将键/值对用于内部工作,则无需这样做。
如果它确实涉及输出字符串,那么是的,这将是一个很好的方法。您还可以考虑将键和值拆分到两个 XML 节点上——这实际上取决于您对它们进行的操作。
但总的来说,是的,就是这样。
你真的有三个选项,因为没有对键/值对的官方支持
您已经使用了这种方法,但首先我建议使用字符串数组而不是字符串。这样,您可以将哈希图保存在一个地方。我建议使用随机 unicode 值而不是句号,因为这样可以降低拆分字符串时的风险。
有 2 个字符串数组。第一个数组包含它们的键,第二个数组包含值。通常使用这种方法,但您必须担心耦合/确保任何编辑都反映在两个字符串数组上。
这个建立在数字 2 上。你有一个键/值对的字符串数组,然后是一个包含数组的数组。您使用gainTypedArray()获取“hashmap” ,然后在 for 循环或其他内容中,使用 TypedArray.getTextArray() 返回单个 String 数组。这允许键和值的耦合。
<string-array name="hello_world"> <item>Hello</item> <item>世界</item> </string-array>
<array name="hashmap"> <item>@array/hello_world</item> </array
(请忽略可怕的格式,stackoverflow 似乎不太适合 xml)