Abstract.
이번 에러는 커스텀 체크박스(Custom CheckBox)를 작성하고 빌드하여 테스트 하다가 에러가 발생했다. 간단히 요약하자면 xml 파일에서 작성한 <CheckBox> 태그의 내용 중에서 커스텀 체크박스만 보여주기 위해 android:button="@null" 이라는 내용을 작성하는데, 여기서 @를 빼먹고 android:button="null"로 작성하여 발생한 내용이다.
1. 에러 내용
프로젝트에서 커스텀 체크박스를 적용할 필요가 있어서 체크박스를 커스터마이징 하는 xml 파일들을 작성하고 최종적으로 이 커스텀 체크박스가 보여질 xml 코드에 CheckBox 태그를 다음과 같이 작성하였다.
xml 코드
<CheckBox
android:id="@+id/cb_question_1"
style="@style/Custom_Checkbox_Green"
android:layout_width="match_parent"
android:layout_height="60dp"
android:paddingStart="30dp"
android:button="null"
android:text="@string/basic_question_01"
android:textSize="20sp" />
Notice : style="@style/Custom_Checkbox_Green"는 themes.xml 파일에 커스텀 체크박스에 대한 스타일을 직접 만들어정의해 둔 것이다.
이 에러에서 주목할 내용은 다음 두 가지다.
- activity_basic_survey.xml:108
- error: 'null' is incompatible with attribute button (attr) reference.
error: failed linking file resources.
activity_basic_survey.xml:108의 내용을 보면 알 수 있듯이, activity_basic_survey.xml 파일의 108번째 줄에서 에러가 발생했다는데, 확인해보니 다음 코드에서 에러가 발생했다.
<CheckBox
android:button="null" />
error: 'null' is incompatible with attribute button (attr) reference.의 내용에서 확인 가능하듯이 button 레퍼런스에 작성된 null이라는 것이 호환되지 않기 때문에 발생한 것이다. @null로 작성해야 정상 작동하는 것인데 @를 빼먹어서 그런 것이었다.
2. 에러 해결
위에서 파악한 에러 웬인이 밝혀졌으니 해결하는 것은 간단하다. <CheckBox> 태그 안의 android:button=""속성에서 null 앞에 @를 붙여주기만 하면 된다.
<CheckBox
android:button="@null" />
코드를 작성하면서 세미콜론(;)을 빼먹는 것과 같은 급의 실수라고 보면 된다.
댓글