본문 바로가기

나의 플랫폼/안드로이드

[Kotlin]Databinding OnClick 시 에러 나시는 분 참고

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

요즈음 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로 받아야 합니다. 한번 해보세요~!!!


저 같이 쓸데 없이 시간을 보내실 분들이 혹시 계실까봐 공유 해드려요 ㅠㅠ

참고하세요.