Abstract.
액티비티 자바코드에 DataBinding을 사용하기 위해 xml 파일 셋팅을 하고, 테스트를 위해 실행을 했더니 빌드 과정에서 XMLStreamException 에러가 발생했다. 결론적으로 에러의 원인은 xml 파일에서 <layout> 태그 안에 layout_width 속성이 중복되어서 발생하는 것이었다. 따라서 <layout> 태그 안의 layout_width, layout_height 속성을 제거하여 문제를 해결할 수 있다. 자세한 내용은 다음에서 설명한다.
1. 에러 내용
DataBinding을 사용하기 위해 xml 파일의 가장 바깥쪽 태그를 <layout> 태그로 수정했다. 그리고 테스트를 위해 실행을 해보았는데, 다음과 같은 에러가 발생했다.
Caused by javax.xml.stream.XMLStreamException ParseError at [row,col][9,210]라는 에러가 발생했는데, 이 에러는 xml 파일의 태그를 닫지 않았거나 잘못된 문자가 들어가는 경우 발생하는 에러라고 한다. 이 문제를 해결하기 위해 다른 에러 메시지도 확인해보았다.
다른 에러메시지 중 [Fatal Error] activity_alarm.xml:9:158: Attribute "android:layout_width" was already specified for element "LinearLayout". 에러를 확인해보니 LinearLayout의 요소로 이미 명시된 특성 android:layout_width 때문이라고 적혀있다. 내가 작성한 activity_alarm.xml에 문제가 있는 것이었다.
2. 에러 해결
에러 해결 방법은 다음과 같다. 해당 xml 파일의 가장 바깥쪽 태그인 <layout> 태그 안에서 다음 박스 부분의 내용을 삭제해주면 해결된다. layout_width와 layout_height가 LinearLayout의 요소로 이미 명시된 특성이므로 이를 제거함으로써 문제를 해결할 수 있다.
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>
.
.
.
</layout>
이러한 형태로 수정하면 정상적으로 빌드되는 것을 확인할 수 있다.
댓글