2010-03-07 3 views
4

Android 앱에 XML 리소스가 있습니다. 각각은 "bicycle.xml"과 "car.xml"과 같은 다른 이름을가집니다. 런타임 동안 조건에 따라 리소스를로드하는 방법이 있는지 알고 싶습니다.Android에서 런타임에 임의로 리소스를로드하는 방법이 있습니까?

예를 들어 ... 내 앱에 텍스트 입력이 있다고 가정 해보십시오. 사용자가 "bicycle"을 입력하면 내 응용 프로그램은 해당 이름으로 XML 리소스를 검색하고 파싱하고로드 할 수 있습니다. 반면에 "car"를 입력하면 다른 XML 파일의 데이터로 끝납니다.

리소스를로드하기 위해 자동 생성 된 "R"클래스를 사용해야하는데, 이는 컴파일 타임에 리소스를 하드 코딩하도록 제한합니다.

답변

6

내가 자원을로드하기 위해 지금까지 나타났습니다, 당신은 이 컴파일시에 하드 코딩 자원 당신을 제한하는 자동 생성 "R"클래스를 사용해야합니다.

Resources#getIdentifier()을 사용하면 런타임시 이름과 유형별로 자원의 ID를 찾을 수 있습니다. 이것은 R 클래스에 대한 리플렉션을 사용하므로 비교적 비쌉니다. 많은 작업을 수행하거나 결과를 캐싱하지 마십시오.

+0

정상적으로 작동하는 동안이 아니라 "로드"단계에서만 호출 할 캐시를 확실히 캐싱하고 있습니다. 런타임에 이와 같이 효과적으로로드하기 위해 제안 할 수있는 대안이 있습니까? –

+0

나는 당신의 질문을 이해하지 못한다. 'getIdentifier()'는 초를 취하지는 않지만, 사용자가 fling (flung)을 할 수있는 목록의 각 행에 대해 호출하고자하는 일과는 다릅니다. – CommonsWare

관련 문제