代码之家  ›  专栏  ›  技术社区  ›  oreofeolurin

Android绑定停止工作

  •  8
  • oreofeolurin  · 技术社区  · 7 年前

    只是突然我的android绑定停止了工作,我现在构建的任何东西,我都收到了这个消息。

    错误:任务执行失败:应用程序:CompiledEdebugJavaWithJavaC。

    Java语言lang.RuntimeException:发现数据绑定错误。 文件:C:\path\to\layout\layout。xml 地点:85:12-96:54

    我试过的

    第一 有人建议,如果我的文件中有错误,绑定将不会编译,因此删除了我使用绑定的所有布局文件,最多一个文件 layout.xml . 我看到了

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

    android:text="@={model.name}" 它抛出上一个错误。

    下一个

    @InverseBindingAdapter(attribute = "android:text")
    public static String captureEditTextValue(EditText view) {
        return view.getText().toString();
    }
    

    ...然后它抛出新的错误。

    Java语言lang.RuntimeException:发现数据绑定错误。 ****/数据绑定错误****消息:在视图类型“android”上找不到事件“android:textAttrChanged”。小装置。编辑文本' 文件:C:\Users\EdgeTech\AndroidStudioProjects\钱包\钱包客户\ app\src\main\res\layout\get\u phone\u布局。xml 地点:85:12-96:54 ****\数据绑定错误****

    更进一步 ,以重构到此

     @InverseBindingAdapter(attribute = "android:text", event = "android:textAttrChanged")
     public static String captureEditTextValue(EditText view) {
            return view.getText().toString();
     }
    

    • Gradle构建工具:2.3.3
    4 回复  |  直到 7 年前
        1
  •  3
  •   namezhouyu    7 年前

    双向绑定需要这种类型:

    ObservableField<T>
    

    在viewModel中。班

    public ObservableField<String> productName = new ObservableField<>();
    

    在布局中。xml:

    <EditText
           android:layout_width="wrap_content"
           android:layout_height="match_parent"
           android:text="@={viewModel.productName}" />
    
        2
  •  2
  •   Randall Arms    7 年前

    摆脱 InverseBindingAdapter

    然后,在EditText XML标记中,更改 android:text="@={model.name} --&燃气轮机; android:text="@={`` + model.name}" .

        3
  •  2
  •   BlackHatSamurai    7 年前

    @InverseBindingAdapter(attribute = "android:text")
    public static String captureEditTextValue(EditText view) {
        return view.getText().toString();
    }
    

    收件人:

    @InverseBindingAdapter(attribute = "android:text")
    public static String getText(TextView view) {
        return view.getText().toString();
    }
    
        4
  •  1
  •   oreofeolurin    7 年前

    然而,它现在正在工作。在我将构建工具和SDK平台工具升级到版本后,它开始工作 . 还不确定为什么会与版本冲突 虽然

    推荐文章