2016-09-06 82 views
1

我试图通过使用监听意见onFocusChange功能结合,但出现以下错误通意见OnFocusChange数据绑定的Android

回调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); 
    } 
} 
+1

请张贴'saveClick()的代码'。 –

+0

什么是'obj'的''声明? (编辑您的问题。不要发表评论的这个信息。) –

+0

请让我知道我在这里做错了什么。 – Colin11

回答

4

我认为,该错误信息不正确的措辞。它没有任何意义的是onFocusChange()有两个方法,因为它的方法。更可能的,问题是,onFocusChange()有两个参数,一个Viewboolean。你已经声明lambda只有一个参数。只需向lambda添加第二个参数即可。

+0

当我传递一个布尔值时,我无法获取user.name的值。请你能解释一下如何获取user.name的值。 – Colin11

+0

@ Colin11 lambda需要**接受**一个布尔值。您可以修改'saveClick()'来获取三个参数或忽略布尔值。 –

+0

谢谢!它的工作:) – Colin11