프로그래밍/Android 짜투리 지식

[android] get resource id by String

선제 2014. 2. 7. 13:46

내장된 resource를 가져오려면 약속된 key로 가져오게 된다.

가장 보편적으로 쓰는것이 파일이름이 image.jpg인 drawable에 대해

ImageView.setImageResource(R.drawable.image);


하지만 key를 모를경우, String으로 해당 resource를 찾아올 수 있다.



private static Drawable getResource(String resName, Context context)
			throws NameNotFoundException {

		Context resContext = context.createPackageContext(context.getPackageName(), 0);
		Resources res = resContext.getResources();

		int id = res.getIdentifier(resName + "48", "drawable", context.getPackageName());
		if (id == 0) {
			return res.getDrawable(R.drawable.page_white48);
		} else
			return res.getDrawable(id);
	}

.


7번째 줄이 핵심 

int android.content.res.Resources.getIdentifier(String name, String defType, String defPackage) 

Added in API level 1

name : resource의 이름 
getType : resource type(ex. drawable 등등) 
defPackage : resource를 가지고 있는 package