android – 从值获取资源ID

前端之家收集整理的这篇文章主要介绍了android – 从值获取资源ID前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我确实有很多语言具体的资源.在我的 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" language
String translatedValue = this.getResources().getString(i);

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

解决方法

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

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

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

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

猜你在找的Android相关文章