Android 如何在数据绑定中将字符串作为参数传递给方法

Android 如何在数据绑定中将字符串作为参数传递给方法,android,mvvm,android-databinding,Android,Mvvm,Android Databinding,我正在使用数据绑定。我必须调用ViewModel方法并单击Submit按钮。该方法有一个字符串参数。我正在从EditText访问值 这是我在ViewModel中的方法 public void submit(String password){ // Method definition } 这是我的布局文件 <EditText android:id="@+id/password" android:hint="Password&quo

我正在使用数据绑定。我必须调用ViewModel方法并单击Submit按钮。该方法有一个字符串参数。我正在从EditText访问值

这是我在ViewModel中的方法

public void submit(String password){
       // Method definition
}
这是我的布局文件

<EditText
    android:id="@+id/password"
    android:hint="Password"
    />
<Button
    android:id="@+id/submitButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="@={() -> viewModel.submit(password.text.toString())}"
/>
 

我得到了这个错误

错误:找不到符号 导入com.rohitksingh.lockbox.databinding.FragmentLoginBindingImpl; ^ 符号:类FragmentLoginBindingImpl


我该如何解决这个问题?当我在方法中传递一个整数值时,它工作正常。

您无法访问lambda中的其他视图。onClick lambda(来自onClickListener)仅接收调用onClick的视图,即当前按钮

或者,可以对EditText使用双向绑定,将其值存储在视图模型中,并在按下按钮时访问它

<EditText
    android:id="@+id/password"
    android:hint="Password"
    android:text="@={viewmodel.password}"
    />

这正是我作为替代解决方案所做的。但我不确定是否有办法在lambda做到这一点。非常感谢。