Data binding error 발생
XML Layout 파일에서 Data binding을 사용하는 분들이 많습니다. 저를 비롯해서..
저는 사진 촬영 버튼을 누르면 저장 할 것인지 다시 촬영할 것인지, 미리보기 화면을 제공하는 기능을 구현하고 있었습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| <?xml version="1.0" encoding="utf-8"?> <layout> <data> <import type="android.view.View" /> <variable name="activity" type="project.wgtech.sample.view.CameraActivity" /> <variable name="previewMode" type="java.lang.Boolean" /> </data>
<androidx.appcompat.widget.AppCompatImageButton .. 생략 .. android:onClick="@{activity::clickCapture}" android:visibility="@{previewMode ? View.VISIBLE : View.GONE}" />
</layout>
|
위와 같이 Data binding 을 수행하고 build를 시도해보니….
****/ data binding error****
msg:Identifiers must have user defined types from the XML file.
View is missing it file: …
****\ data binding error
라는 오류가 발생되면서 build에 실패합니다….
왜 발생할까요?
View is missing it 이라고 합니다.
XML 파일에서 해당 View를 정의하지 않아 생긴 오류라고는 하는데,
1 2 3 4 5 6 7
| <androidx.appcompat.widget.AppCompatImageButton .. 생략 .. android:onClick="@{activity::clickCapture}" android:visibility="@{previewMode ? View.VISIBLE : View.GONE}" />
|
android:visibility 에서 View 클래스를 사용하고 있더라구요.
도대체 어디서 저 View 를 정의하면 되는 것인가~ 했더니! import하면 되는 것이었습니다.
해결 방법
따라서 태그에서 View 클래스를 import 하면 됩니다.
1 2 3 4
| <data> <import type="android.view.View" />
</data>
|
위와 같은 형식으로 <data> 태그안에 <import> 태그를 정의하고,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| <?xml version="1.0" encoding="utf-8"?> <layout> <data> <import type="android.view.View" /> <variable name="activity" type="project.wgtech.sample.view.CameraActivity" /> <variable name="previewMode" type="java.lang.Boolean" /> </data>
<androidx.appcompat.widget.AppCompatImageButton .. 생략 .. android:onClick="@{activity::clickCapture}" android:visibility="@{previewMode ? View.VISIBLE : View.GONE}" />
</layout>
|
로써, 미리보기 화면을 한 화면에서 조정할 수 있게 되었습니다!