2012-08-12 221 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