안드로이드 개발 setId() 에러 Expected resource of type id 해결하는 방법 |
환경: Android Studio |
해당 에러는 화면에 쓰이는 컨트롤들을 자바 소스에서 만들어 Id 를 부여할 때 발생할 수 있습니다. 안드로이드 프로젝트에 쓰인 모든 리소스들은 상수값을 부여 받습니다. R.java 에 보시면 static final init 의 값들을 볼 수 있습니다. 만약 setId() 의 인수로 양의 정수(Integer)값을 넣었는데도 에러가 난다면 동일한 Id 가 존재하기 때문입니다. 그럼 에러를 어떻게 해결할 수 있는지 알아 보겠습니다.
▼ 프로젝트에서 리소스들을 추가하면 상수값을 부여하고 R.java 에 추가가 됩니다.
▼ 그림처럼 자바에서 Button 을 생성한 후 setId() 함수를 이용해서 아이디를 부여했는데 Expected resource of type id 에러가 나네요.
▼ 첫 번째 해결 방법은 View 클래스의 generateViewId() 함수를 사용하는 것입니다. 함수에서 리턴하는 int 값은 기존 id 와 충돌하지 않습니다. 왜냐하면 빌드 시점에서 값을 부여하기 때문입니다.
▼ 두 번째 방법은 문자열 리소스를 이용하는 것입니다. 텍스트 스타일과 서식, 텍스트 문자열을 제공할 수 있는 리소스 XML 파일을 만듭니다. 그리고 setId() 에 쓰일 값들을 <item> 태그를 이용해서 하나씩 추가합니다. 이렇게 추가한 값들은 resource 값들을 부여 받게 됩니다. 이제 하나씩 가져다 쓰면 되겠죠.
▼ 그림처럼 R.id 를 클릭하면 <resources> 에 추가한 <item> 값들이 하나씩 나타납니다. 이상으로 Expected resource of type id 해결하는 방법에 대해 알아 보았습니다.
'안드로이드 개발' 카테고리의 다른 글
안드로이드(Android) SensorManager 와 SensorEventListener 이용해서 x, y, z 축 감지하는 방법 (0) | 2018.01.26 |
---|---|
안드로이드(Android) 다양한 애니메이션 이동(translate) 을 구현하는 여러가지 방법 (0) | 2018.01.19 |
안드로이드 개발 서비스 바인딩 (Service Bind) 예제 구현하는 방법 (0) | 2018.01.18 |
안드로이드 개발 레이아웃 인플레이션(LayoutInflater)으로 화면 구성하는 방법 (0) | 2018.01.04 |
안드로이드 개발 Activity 호출하고 결과값을 받는 onActivityForResult 사용하는 방법 (0) | 2017.12.30 |
안드로이드 개발 서비스(Service) 컴포넌트 예제 구현하는 방법 (0) | 2017.12.27 |
안드로이드 개발 생성자 추가하는 방법, There is no default constructor available in (0) | 2017.12.23 |
안드로이드 개발 RelativeLayout 화면을 Java 소스에서 구현하는 방법 (0) | 2017.12.17 |