android – 从值获取资源ID

android – 从值获取资源ID,第1张

概述我确实有很多语言具体的资源.在我的 Android应用程序中有一点我得到一个资源值,需要将该值转换为匹配的ID.该值不一定在当前语言的特定于语言的文件(en / de / …)中.它在那里的某个地方,它是独一无二的. 阅读文档和这个线程“How to get a resource id with a known resource name?”后,我以为getIdentifier(String na 我确实有很多语言具体的资源.在我的 Android应用程序中有一点我得到一个资源值,需要将该值转换为匹配的ID.该值不一定在当前语言的特定于语言的文件(en / de / …)中.它在那里的某个地方,它是独一无二的.

阅读文档和这个线程“How to get a resource id with a known resource name?”后,我以为getIDentifIEr(String name,String defType,String defPackage)是正确的方法,但是我无法使它工作.结果始终为“0”.

此代码是活动的一部分,我在AndroID 2.2上.

AndroID可能不会将所有资源文件纳入考虑范围,并且仅搜索当前的特定语言文件?

例如(当前的语言是“de”):

file: values-en/strings.xml<resources>   <string name="txt_afirsttext">A first text</string>   <string name="txt_asecondtext">A second text</string></resources>file: values-de/strings.xml<resources>   <string name="txt_afirsttext">Ein erster Text</string>   <string name="txt_asecondtext">Ein zweiter Text</string></resources>// Now I want to find the ID to this "en" text ...String testValue = "A second text";int i = this.getResources().getIDentifIEr(testValue,"strings",this.getPackagename());// ... and translate it to the actual "de" languageString translatedValue = this.getResources().getString(i);

使事情清晰我不想错过使用字符串资源作为数据库.这只是在极少数情况下发生的一部分.

解决方法 你正在使用getIDentifIEr错误.您不要指定文本,而是指定文本的标识符,在您的情况下,这将是txt_afirsttext或txt_asecondtext.
int i = this.getResources().             getIDentifIEr("txt_asecondtext","string",this.getPackagename());

我认为没有办法通过其内容找到一个String资源标识符.这就像传递一个字节流来定位一个drawable.

你的应用程序真的需要这种奇怪的获取资源的方法吗?我相信你可以使用更好的方法动态加载资源,虽然你的第一段描述你的场景是一个神秘的:)

编辑:答案固定.感谢tdroza的纠正.

总结

以上是内存溢出为你收集整理的android – 从值获取资源ID全部内容,希望文章能够帮你解决android – 从值获取资源ID所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1133932.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存