我正在尝试了解一个对投资组合执行计算的 Android 应用程序。投资组合存储在res/values/portfolio.xml
:
当按下应用程序中的按钮时,将按如下方式检索投资组合数据:
String portfolioName = ((TextView) findViewById(R.id.portfolioName)).getText().toString();
Resources res = getResources();
String[] data = res.getStringArray(res.getIdentifier(portfolioName, "array", this.getPackageName()));
我找到了 Android 文档字符串数组 http://developer.android.com/guide/topics/resources/string-resource.html#StringArray解释语法的资源类型portfolio.xml
文件,它解释了为什么name
属性应该用作第一个参数getIdentifier()
:
“文件名是任意的。这<string-array>
元素的name
将用作资源 ID。”
但我还没有找到任何文档来解释你如何知道你应该为defType
的论证getIdentifier
(除此之外它是一个字符串)。在提供的示例中,"array"
有效,但它从哪里来?一般来说,“defType”的可能值是什么?
getIdentifier
返回id
给定资源名称的资源的名称。 typeDef 指的是类型Resource
(阅读更多here http://developer.android.com/intl/es/guide/topics/resources/available-resources.html)。请记住,内容res
在编译时进行解析,并根据解析结果生成 R.java 类。最后,您要寻找的是在该类中声明的字段。我不知道内部实现,但如果你提供array
作为 res 类型,android 只会查找R.array
,而不是整体上R
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)