gpt4 book ai didi

java - 为什么 getResources().getStringArray(R.array.***);当我将 *.xml 文件移动到与 res/values 不同的文件夹时,方法不起作用

转载 作者:搜寻专家 更新时间:2023-11-01 08:17:42 25 4
gpt4 key购买 nike

我有一个特殊的问题。我在 xml 文件中有一个数组:

res/values/difficulties.xml

<?xml version="1.0" encoding="utf-8"?>

<resources>
<string-array name="difficulty_names">
<item> @string/easy </item>
<item> @string/medium </item>
<item> @string/hard </item>
<item> @string/insane </item>
<item> @string/preposterous </item>
<item> @string/ludicrous </item>
</string-array>
</resources>

为了初始化这个数组,我使用了这个方法:

String[] difficultiesNamesArray = getResources().getStringArray(R.array.difficulty_names); 

这非常有效。直到我将这个文件移动到不同的文件夹中。从此这个方法就失效了。新路径是:

res/arrays/difficulties.xml

我想知道,如何本地化此文件并在此重新定位的 xml 文件上再次使用 getStringArray() 方法。

或者甚至可以使用 getResources().getStringArray(R.array.***) 方法。如果没有,我如何从这个不同的路径读取数组。我的猜测是,它需要实现 XMLParser。但我不知道如何使用这个简单的数组来完成。

developer.android.com我找到了这个信息:

String Resources

  • Define strings, string arrays, and plurals (and include string formatting and styling). Saved in res/values/ and accessed from the
    R.string, R.array, and R.plurals classes.

所以我认为这与我的问题有某种联系,我无法对位于与 res/values/ 不同路径的文件使用 getStringArray() 方法。但这只是我的直觉。我不知道。

我说的对吗?可以从不同的路径读取 array.xml 吗?如果是如何?

最佳答案

res/values/是系统保留文件夹。因此,当您在该文件夹中添加数组、字符串等时,将根据您要添加的值的类型生成一个 android Resource ("R") 类。因此,如果您使用不同的文件夹结构,则不会生成相同的“R”类值。

可以引用here了解有关正在生成的“R”类的更多信息

如果你想在你自己的文件夹结构中维护你的值,那么你可能需要将它放在你想要的任何文件夹结构中的“assets”文件夹中。然后访问它,你需要自己解析xml,这是非常NOT RECOMMENDED

可以引用以下link查看如何从 Assets 文件夹中读取文件。

我的建议是以类似于文件夹结构的方式命名您的字符串文件。在您的情况下,考虑命名为 res/values/arrays_difficulties.xml

关于java - 为什么 getResources().getStringArray(R.array.***);当我将 *.xml 文件移动到与 res/values 不同的文件夹时,方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57366430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com