Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Android xml中正确添加TextChangeListener_Java_Android_Android Databinding - Fatal编程技术网

Java 如何在Android xml中正确添加TextChangeListener

Java 如何在Android xml中正确添加TextChangeListener,java,android,android-databinding,Java,Android,Android Databinding,我也尝试过这样做: 因此,我有xml格式的EditText: <?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <data> <import type="test.edu

我也尝试过这样做:

因此,我有xml格式的EditText:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

<data>
    <import type="test.edu.MyViewModel"/>
    <variable type="MyViewModel" name="viewModel"/>
</data>

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent">

(...)

<EditText 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:addTextChangeListener="@{viewModel.myTextWatcher}"/>

(...)
我认为我已经完成了与上述链接中相同的操作,但当我尝试编译时,我得到:

在android.widget.EditText上找不到参数类型为android.text.TextWatcher的属性“app:addTextChangeListener”的setter


你能给我一些提示,看看这里出了什么问题吗?我假设我提到的代码正在编译,但我不是100%确定。

您可以这样尝试:

    EditText editText =(EditText)findViewById(R.id.editText1);
    editText.addTextChangeListener(new TextWatcher(){
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {}

        @Override
        public void afterTextChanged(Editable editable) {}
    };

我没有把它写在你的
xml
文件中,而是最终解决了这个问题。。。那只是个打字错误。我没有使用addTextChanged监听器,而是使用addTextChange监听器,老实说,错误消息并没有太大帮助。现在,当我知道解决方案时,这是显而易见的,但之前我检查了“app”名称空间、一些@Bind注释、gradle选项等等。也许只有我一个人,但我认为如果出现以下错误,会容易得多:

android.widget.EditText没有函数addTextChangeListener


我知道,但因为我使用的是MVVM,所以我想避免在ViewModel中使用findViewById。根据谷歌的说法:“ViewModel的唯一职责是管理UI的数据。它永远不应该访问您的视图层次结构(…)”,最好用XML设置UI元素
    EditText editText =(EditText)findViewById(R.id.editText1);
    editText.addTextChangeListener(new TextWatcher(){
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {}

        @Override
        public void afterTextChanged(Editable editable) {}
    };