상세 컨텐츠

본문 제목

[안드로이드] res상 파일의 id값을 알고 싶을때

Android.. Story

by HeyLee 2011. 3. 24. 19:38

본문

에.. 이번 포스트는 안드로이드에서 파일의 id를 알아야할떄가 필요 할수도 있습니다..
어떤 경우가 됬건간에 말이죠..저같은 경우 DB초기값 지정할떄 사용하긴했습니다만..여튼 별로 좋은 사용 예는 아니니...
이건 뺴고.. R.java 파일에는 개발자가 건드릴 필요 없이 자동으로 값을 생성시키며 최신화 시켜줍니다.

물론 가끔 버그가 떠서 R.java파일을 지워줫다가 다시 생성 시키게 해야 컴파일 되는 경우도 있긴 했습니다만.

R.java파일에 들어가보면 각 리소스 파일 마다 id가 자동으로 붙게 됩니다.

R.java

package com.test.ActivityStateTest;
public final class R {
    public static final class anim {
        public static final int fade=0x7f040000;
        public static final int hold=0x7f040001;
    }
    public static final class attr {
    }
    public static final class drawable {
        public static final int icon=0x7f020000;
    }
    public static final class id {
        public static final int btnActivtiyA=0x7f060001;
        public static final int btnActivtiyB=0x7f060000;
    }
    public static final class layout {
        public static final int main=0x7f030000;
        public static final int main2=0x7f030001;
    }
    public static final class string {
        public static final int app_name=0x7f050001;
        public static final int hello=0x7f050000;
    }
}

다음 코드는 제가 예제로 썻던 코드의 R 파일입니다. 앱의 크기가 커지면 커질수록 당연히 목록은 자연히 불어 갑니다.

그리고 매 새 파일(xml이라던가 ,그림파일이라던가..)추가 될떄마다 컴파일시 값이 변경 될수도 있습니다.

그냥 코딩상에서 ID가 궁금해서 보실려면 Log.d를 사용해서 찍어보실수도 있습니다.
Log.d("GetID","GetID : "+R.drawable.icon); // 로그 뜨는 ID값 적어둿다가 그냥 대입하면 안됨.

ID값을 알아고보고 싶다면 다음과 같은 방법을 사용하시면 됩니다.


  try {
   Class<R.drawable> drawable = R.drawable.class;
   Field field = drawable.getField("icon"); //알고싶은 id값.
   int r = field.getInt(null);
   Log.d("TA", " Icon ID : " + r);
  } catch (Exception e) {
   // TODO: handle exception
  }

관련글 더보기

댓글 영역