조회 수 4081 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

동적인 문자열로 리소스 가져오는 방법.

문자열로 해당 Resource (혹은 레이아웃에 포함된 View) 의 ID 값을 가져온다;


-----------------------------------------------------------------

getResources().getIdentifier(패키지명:디렉토리/파일명, null, null);

또는,

getResources().getIdentifier(파일명, 디렉토리명, 패키지명);

-----------------------------------------------------------------


String resName = "@drawable/imgEnd";
String packName = this.getPackageName(); // 패키지명
int resID = getResources().getIdentifier(resName, "drawable", packName);

String viewName = "imgViewEnd";
String packName = this.getPackageName(); // 패키지명
int resID = getResources().getIdentifier(resName, "id", packName);


주로 리소스/뷰의 이름을 조합형식으로 만들어 가져와야 할 경우 이런 코드를 사용할 수 있다.

예를 들어,

for (int i=0; i < 3; i++) {
    String resName = "@drawable/img_" + i;
    // 결론적으로 이미지 리소스 이름은 img_1, img_2, img_3 이 되겠다;
    int resID = getResources().getIdentifier(resName, "drawable", packName);

    ImageView iv = (ImageView)findViewById(R.id.imgView);
    iv.setImageResource(resID); // 이미지뷰의 이미지를 설정한다;
}


적용한 샘플코드 ㅋㄷ

int count = 0;
for(int r=0; r<puzButtons.length; r++){
    for(int c=0; c<puzButtons[r].length; c++){
    // getResources().getIdentifier(패키지명:디렉토리/파일명, null, null);
    //String buttonName = getPackageName() + ":id/btn" + r + c;
    //int id = getResources().getIdentifier(buttonName, null, null);

    // 또는, getResources().getIdentifier(파일명, 디렉토리명, 패키지명);
    String idName = "btn" + r + c;
    int id = getResources().getIdentifier(idName, "id", getPackageName());

    puzButtons[r][c] = (Button)findViewById(id);
    puzButtons[r][c].setText(Integer.toString(ar[count]));
    if(listen == true) {
        puzButtons[r][c].setOnClickListener(listener);
    }
    puzButtons[r][c].setTag(new Point(r,c));

    if(ar[count] == 0){
        curPoint.set(r, c);
        puzButtons[r][c].setText("");
    }

    count++;
    }
}

?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
729 Develop [ios] Swift 4 String, Date, DateFormatter 예제 hooni 2018.10.18 1521
728 Develop What is difference between Get, Post, Put and Delete? hooni 2018.02.28 1577
727 Develop How to Test SMTP AUTH using Telnet hooni 2018.04.05 1596
726 Develop [swift] popToRoot 모달뷰, 네비게이션컨트롤러 한꺼번에 닫기 file hooni 2021.01.29 1608
725 Develop [android] 레이아웃 사이즈 변경 (동적; programmatically) hooni 2016.11.07 1625
724 Develop [ios] binary를 C코드로 변환 file hooni 2015.01.03 1653
723 Develop [ios] 스크린 캡쳐 (전원버튼 + 홈버튼) 호출 알아내기 hooni 2014.11.19 1660
722 Develop [ios] Swift 4 Singleton inheritance hooni 2018.10.31 1695
721 Develop [js] 모바일 스크롤 방지(해제) hooni 2015.04.14 1701
720 Develop [python] 파라미터 앞에 *, ** 의 의미? (*args, **kwargs) hooni 2019.11.22 1708
719 Develop ZBar 라이브러리를 이용한 바코드 스캔 앱 개발하기 file hooni 2015.01.01 1736
718 Develop [ios] Requesting Location Permissions in iOS file hooni 2018.08.18 1746
717 Develop [ios] Locale Identifiers file hooni 2018.11.29 1748
716 Develop [web] 더 빠른 웹을 위한 프로토콜, 'HTTP/2' file hooni 2014.10.20 1770
715 Develop [ios] 동영상 플레이어 샘플 (for Remote Url) file hooni 2017.02.07 1771
714 Develop [ios] How To Use UIScrollView to Scroll and Zoom Content (Using Objective-C) file hooni 2016.03.23 1773
Board Pagination Prev 1 ... 6 7 8 9 10 ... 53 Next
/ 53