为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 getResources().getStringArray(R.array.***);

为什么 getResources().getStringArray(R.array.***);

守候你守候我 2023-05-17 17:53:06
我有一个特殊的问题。我在 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我发现了这个信息:字符串资源定义字符串、字符串数组和复数(包括字符串格式和样式)。保存在res/values/中并从R.string、R.array和R.plurals类访问。所以我认为这与我的问题有某种联系,我不能对位于不同路径的文件使用 getStringArray() 方法,然后res/values/。但这只是我的直觉。我不知道。我对吗?可以从不同的路径读取 array.xml 吗?如果是如何?
查看完整描述

1 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

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

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

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


查看完整回答
反对 回复 2023-05-17
  • 1 回答
  • 0 关注
  • 136 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信