마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

xml의 속성에 "@drawable/~" 넣고 int 형으로 가져오는법 ㅠㅠ

0 추천
<list icon="@drawable/icon" />

이라는 xml 엘리먼트 가 있습니다.

 

그다음 자바에서

XmlPullParser xpp = getResources().getXml(R.xml.skill);

int icon = xpp.getAttributeValue(0);

 

이렇게하면 String 값인데 int형 변수에 넣는다고 컴파일 애러나요 ㅠㅠ

또, 속성값이 숫자로 되잇지않으니 Integer.toString() 메소드 쓸수도없고...ㅠㅠ

 

어떻게하면 될까요!! ㅠㅠ
ygh (520 포인트) 님이 2014년 6월 22일 질문

2개의 답변

0 추천
혹시 안드로이드 프로젝트내 drawable 폴더내에 존재하는 icon 이며 해당 리소스 id를 가져오고 싶으신 거라면

R.drawable.icon으로 가져올수 있습니다.
삽질하세 (1,250 포인트) 님이 2014년 6월 22일 답변
아... 하신말씀 모두 맞으시지만 여러개중 아이콘중 특정 하나를 가져오는거라서 R.drawable.icon 하나를 딱정할수가 없어요 ㅠㅠ
xml 에서 R.drawable.icon 이라고 정의해놓고 들고올려는데 방법이 저거밖에 생각이않나여...

최종적으로 imageview 에 setImageResource 를 하기위해서에여...
결국 xml내에 icon 어트리뷰트의 값의 이미지가 drawable 폴더에 있는데 그 리소스 id값을 가져오시고 싶으신거죠?

분기처리로 해결이 안되나요?
어떤 값일땐 어떤 이미지를 불러오고.. 이게 가장 쉬운 방법 이긴 하지만.

음.. 왠지 소잡는 칼로 닭잡는 격이긴 하지만
리플렉션을 활용하면 될것 같은데요...
어파치 리소스 ID 값은 R.java에 정의 되어 있는 것임으로
xml 어트리뷰트를 가져오고 @drawabld/ 이걸 제거하고
리플렉션을 이용해 값을 가져오면 될 것 같습니다.

java 리플렉션으로 검색해 보시는게..
일단 저도 예제를 하나 만들어 봐야 겠네요... ;;
저같은 초보한테 이렇게 열심히 답변 달아주셔서 진심으로 감사드립니다 ㅠㅠ
게임 백과사전 만드는데 스킬 이름,타입,이미지 같은거 싹 다 xml 에 정의해놓고 XmlPullParser 로 파싱하는건데 이미지를 어떻게 할지가 문재네요...하 ㅠㅠ
혹시 좀 되시거나 추가로 알려주실만한거 있으시면 답글달아주세영 ㅠㅠ
감사합니다~
try {
           
            Class cls = Class.forName("com.example.test.R$drawable");
            Field flds[] = cls.getDeclaredFields();
            for (Field fld : flds)
            {
                String varname = fld.getName();
                Log.i("TEST", String.format("%s value : %d", varname, fld.getInt(cls)));
            }
           
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

위의 코드를 응용하시면 될 것 같습니다.
추가 합니다. 테스트 해보니 잘 되네요
응용은 재몫이군요! 한번 해보겠습니다 감사합니다 ㅠㅠ
혹시 카톡 아이디 알려주실수있으신가요? ㅠㅠ
쪽지 보내드렸습니다......
어? 쪽지가 않왔어요...
chchch1213@naver.com 으로 보내주시수있으신가요?
번거롭게해서 죄송합니다...
0 추천
쎄미 (162,410 포인트) 님이 2014년 6월 22일 답변
오 이런 방법도 있었군요...
이 방법이 훨씬 나을듯 합니다.
...