我正在尝试使用onFocusChange函数中的Listener绑定传递视图但是会出现以下错误
回调android.view.View.OnFocusChangeListener#onFocusChange有2个方法,但lambda定义为1.它应该有0或相同数量的参数。
请有人帮我找到正确的方法来实现这一点。
<variable
name="user"
type="com.webage.www.vco_address.User" />
<variable
name="obj"
type="com.webage.www.colin.Validations" />
</data>
<EditText
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="82dp"
android:text="@={user.name}"
android:onFocusChange="@{(view)->obj.saveClick(view, user.name)}" />
验证
public class Validations {
public void saveClick(View view, String name){
Log.v("saveClick",name);
}
}
答案 0 :(得分:6)
我认为错误消息的措辞错误。 onFocusChange()
有两种方法没有任何意义,因为它 一种方法。更有可能的是,问题是onFocusChange()
有两个参数,一个View
和一个boolean
。您已声明lambda只接受一个参数。只需向lambda添加第二个参数。
答案 1 :(得分:1)
用于xml :
app:onFocusChangeListener = "@{viewModel::onTargetFocusChanged}"
用于程序代码:
fun onTargetFocusChanged(view: View, hasFocus: Boolean){
...
}