数据绑定错误 - 找不到访问者

时间:2017-04-11 16:05:42

标签: android android-databinding

我用谷歌搜索,但仍然没有为我找到解决方案。

这是我的xml:

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

    <data>
        <import
            alias="noteViewModel"
            type="com.app.screen.createnote.CreateNoteViewModel" />
    </data>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <EditText
                android:id="@+id/etNote"
                style="@style/JWidget.EditText.Grey"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:gravity="start"
                android:inputType="textMultiLine"
                android:scrollbars="vertical"
                android:text="@={noteViewModel.note.description}" />        
    </LinearLayout>
</layout>

这是我的ViewModel代码:

public class CreateNoteViewModel extends BaseObservable {
     private Note note;
     @Bindable
     public Note getNote() {
         return note;
     }

     public void setNote(Note note) {
         this.note = note;
         notifyPropertyChanged(BR.note);
     }

}

但是当我尝试运行我的应用程序时,我明白了:

Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
  

java.lang.RuntimeException:发现数据绑定错误。   **** /数据绑定错误****消息:找不到访问者com.justsafe.tmgr.justsafe.screen.createnote.CreateNoteViewModel.note   文件:C:\机器人\工作\ JustSafeTmgr \程序\ SRC \主\水库\布局\ activity_create_note.xml   当前:44:33 - 44:62   **** \数据绑定错误****

P.S。在我的应用程序的其他地方它工作,但我遇到了问题。

2 个答案:

答案 0 :(得分:2)

尝试将<import>代码更改为<variable>代码:

<data>
        <variable
            name="noteViewModel"
            type="com.app.screen.createnote.CreateNoteViewModel" />
    </data>

答案 1 :(得分:0)

build.gradle-应用

android {
   dataBinding {
        enabled = true
    }
}

dependencies {
    def life_versions = "1.1.1"

    // Lifecycle components
    implementation "android.arch.lifecycle:extensions:$life_versions"
    annotationProcessor "android.arch.lifecycle:compiler:$life_versions"
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
    <data>
        <variable
            name="LoginViewModel"
            type="com.keshav.mvvmdemokeshav.viewModel.LoginViewModel" />
    </data>
    <!-- TODO Your XML File-->
</layout>

enter image description here