2012-08-12 4 views
11

/res/raw 폴더에 저장 한 안드로이드 리소스의 리소스 ID를 가져오고 싶습니다.Android : Howto는 안드로이드 리소스의 리소스 ID를 얻습니다.

사용 -

1) 나는 클래스에 리소스의 이름을 전달하고,이 이름은 문자열 fileNeme에 저장되고있다.

2)이 파일을 가져 오는 구문은 this.getResources().openRawResource(R.raw.xyz)입니다. 여기서 xyz는 실제 파일 이름입니다.

3) 저는 openRawResource (int) 메서드가 int 값을 취한다는 것을 알고 있습니다. 따라서 문을 this.getResources().openRawResource(R.raw.filename)으로 사용할 수 없습니다. 여기서 filename은 위에 정의 된 문자열 변수입니다.

문제점 : filename이라는 문자열에 저장된 파일 이름을 알고 있지만이 메서드는 리소스 ID를 int 형식으로 사용하므로 파일을 열 수 없습니다.

이 파일 이름의 리소스 ID를 가져 와서 int 변수 filename_int에 저장하고이 변수를 openRawResource 메소드에 전달해야합니다.

어떻게하면되는지 알려주십시오.

답변

34

당신은 getIdentifier()와 자원 ID를 얻을 수 있어야합니다 :

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

감사의 현재 작업 톤. – user1576339

+1

감사합니다! 다음 번 사람을 저장하려면 "xyz"매개 변수가 XML 파일에 대해 원하는 문자입니다. 그 앞이나 뒤에 아무것도 없으 리라. "res /"또는 "@raw"등은 없습니다. xyz를 깨끗이하십시오. – Ohiovr

+2

또한 "xyz"에는 접미어가 포함되어서는 안됩니다. 예 : 원시 리소스 myfile.json은 "myfile"입니다. –

관련 문제