Resources.getIdentifier(),deftype 参数的可能值?

2024-01-03

我正在尝试了解一个对投资组合执行计算的 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(使用前将#替换为@)

Resources.getIdentifier(),deftype 参数的可能值? 的相关文章

随机推荐