EdiText android:onValueChange

时间:2018-09-18 06:16:20

标签: android android-layout android-databinding

原始问题

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:onValueChange="@{handler.passwordValidator}"
    android:text="@={model.password}"/>

我找不到android:onValueChange的参数。我应该在下面的方法参数中输入什么?

public void passwordValidator() {

}

尝试了许多可能的参数情况

android:onValueChange="@{handler.passwordValidator}"

android:onValueChange="@{handler::passwordValidator}"

android:onValueChange="@{()->handler.passwordValidator()}"

android:onValueChange="@{(v)->handler.passwordValidator()}"

android:onValueChange="@{(view, value) ->handler.passwordValidator()}"

还请提供一种找到任何属性的参数的方法,以便我自己找到自己。

请注意,它与android:onTextChanged无关。

更新1

@Tenten我有建议。

suggestion

更新2(我稀疏,这不是IDE错误)

这不能是Android的错误,因为当您放置未知属性时,编译后就会出现错误。

案例1(未知属性)

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:asdf=""
    android:text="@={model.password}"/>
  

AGPBI:{“种类”:“错误”,“文本”:“错误:属性   \ u0027android:asdf \ u0027不是   找到。“,”源“:[{”文件“:” E:\ AndroidWorkspace \ RawSamples \ Sample \ app \ src \ main \ res \ layout \ activity_main.xml“,”位置“:{” startLine“:23} }],“原始”:“”,“工具”:“ AAPT”}

案例2(使用android:onValueChange

在这种情况下,错误已更改,如果没有android:onValueChange属性,则错误应该相同。

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:onValueChange="@{handler::passwordValidator}"
    android:text="@={model.password}"/>
  
      
  • 出了什么问题:任务':app:compileDebugJavaWithJavac'的执行失败。      
        

    android.databinding.tool.util.LoggedErrorException:发现数据绑定错误。 **** /数据绑定错误**** msg:无法解决     handler :: passwordValidator作为侦听器。
        文件:E:\ AndroidWorkspace \ RawSamples \ Sample \ app \ src \ main \ res \ layout \ activity_main.xml     loc:23:37-23:62 **** \数据绑定错误****

      
  •   

2 个答案:

答案 0 :(得分:0)

替换:

"@{handler.passwordValidator()}"

使用

"@{handler::passwordValidator}"

还将以下方法设为非静态

public void passwordValidator(View view) {

}

答案 1 :(得分:0)

使用此

EditText myTextBox = (EditText) findViewById(R.id.myTextBox);
myTextBox.addTextChangedListener(new TextWatcher() {

public void afterTextChanged(Editable s) {
}

public void beforeTextChanged(CharSequence s, int start, 
  int count, int after) {
}

public void onTextChanged(CharSequence s, int start, 
  int before, int count) {
    passwordValidator(s.toString());
 }
});

还有这个

public void passwordValidator(String password) {

}