안드로이드 개발 setId() 에러 Expected resource of type id 해결하는 방법

 

환경: Android Studio

 

해당 에러는 화면에 쓰이는 컨트롤들을 자바 소스에서 만들어 Id 를 부여할 때 발생할 수 있습니다. 안드로이드 프로젝트에 쓰인 모든 리소스들은 상수값을 부여 받습니다. R.java 에 보시면 static final init 의 값들을 볼 수 있습니다. 만약 setId() 의 인수로 양의 정수(Integer)값을 넣었는데도 에러가 난다면 동일한 Id 가 존재하기 때문입니다. 그럼 에러를 어떻게 해결할 수 있는지 알아 보겠습니다.

 

프로젝트에서 리소스들을 추가하면 상수값을 부여하고 R.java 에 추가가 됩니다.

안드로이드 개발 setId() 에러 Expected resource of type id 해결하는 방법

 

그림처럼 자바에서 Button 을 생성한 후 setId() 함수를 이용해서 아이디를 부여했는데 Expected resource of type id 에러가 나네요

안드로이드 개발 setId() 에러 Expected resource of type id 해결하는 방법

 

첫 번째 해결 방법은 View 클래스의 generateViewId() 함수를 사용하는 것입니다. 함수에서 리턴하는 int 값은 기존 id 와 충돌하지 않습니다. 왜냐하면 빌드 시점에서 값을 부여하기 때문입니다

안드로이드 개발 setId() 에러 Expected resource of type id 해결하는 방법

 

두 번째 방법은 문자열 리소스를 이용하는 것입니다. 텍스트 스타일과 서식, 텍스트 문자열을 제공할 수 있는 리소스 XML 파일을 만듭니다. 그리고 setId() 에 쓰일 값들을 <item> 태그를 이용해서 하나씩 추가합니다. 이렇게 추가한 값들은 resource 값들을 부여 받게 됩니다. 이제 하나씩 가져다 쓰면 되겠죠

안드로이드 개발 setId() 에러 Expected resource of type id 해결하는 방법

 

그림처럼 R.id 를 클릭하면 <resources> 에 추가한 <item> 값들이 하나씩 나타납니다. 이상으로 Expected resource of type id 해결하는 방법에 대해 알아 보았습니다

안드로이드 개발 setId() 에러 Expected resource of type id 해결하는 방법

Posted by 녹두장군