요즈음 MVVM 패턴에 관심이 많아서 계속 사용하고 있는데요.
Databinding 시, xml에 정의 이기 때문인지 에러 확인이 어렵더라구요.
Error:java.lang.RuntimeException: Found data binding errors.
위와 같이 딸랑 에러 메세지 하나 나오고 세세한 내용을 확인하기가 어려웠습니다.
에러가 나온 원인은 아래 소스를 보시면 되는데요.
## layout.xml
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginStart="5dp"
android:textSize="20sp"
android:textColor="@android:color/black"
android:text="Click me"
android:onClick="@{(v) -> viewModel.onClick(v)}"/>
## ViewModel.kt
fun onClick(v: TextView?) {
Log.d("Test","Clicked")
}
위 소스 같이 하면 발생 됩니다. 에러가 떠서 빌드 진행이 되지가 않죠...
무엇이 문제 일까요.? 전 .TextView이기 때문에 TextView를 그대로 받을려고 했더니 DataBinding이 되지 않습니다.
이걸로.. 전 반나절을 보냈습니다;;; 정말 바보 같았죠..
원인은 OnClickListener 함수를 오버라이딩 하면 알 수 있습니다.
v.setOnClickListener(new android.view.View.OnClickListener(){
@Override
public void onClick(View arg0) {
}
});
onClick 매개변수로 View 가 옵니다!!!
넵 TextView가 아닌 View로 받아야 합니다. 한번 해보세요~!!!
저 같이 쓸데 없이 시간을 보내실 분들이 혹시 계실까봐 공유 해드려요 ㅠㅠ
참고하세요.