2012-08-12 176 views
11

我想获取已保存在/ res/raw文件夹中的android资源的资源ID。Android:Howto获取Android资源的资源ID

使用 -

1)我传递的资源类的名称,这个名称被保存在一个字符串fileNeme。

2)获取此文件的语句是this.getResources().openRawResource(R.raw.xyz)其中xyz是实际的文件名。

3)据我所知,openRawResource(int)方法接受一个int值,因此我不能使用该语句作为this.getResources().openRawResource(R.raw.filename),其中filename是上面定义的字符串变量。

问题:我知道保存在名为filename的字符串中的文件名,但我无法打开它,因为该方法采用int格式的资源ID。

我需要获取此文件名的资源ID并将其保存在一个int变量filename_int中并将此变量传递给openRawResource方法。

请让我知道我该怎么做到这一点。

回答

34

你应该能够getIdentifier()获取资源ID:

int id = this.getResources().getIdentifier("xyz", "raw", this.getPackageName()); 
+0

由于一吨的工作了。 – user1576339 2012-08-12 09:39:46

+1

谢谢!为了节省下一个人的时间,“xyz”参数就是你想要的xml文件的字符。相信你之前或之后没有任何东西。没有“res /”或“@raw”等。只需清理xyz – Ohiovr 2015-06-29 01:16:59

+2

此外,“xyz”不应包含任何后缀。例如原始资源myfile.json只是“myfile”。 – 2015-12-03 23:25:38