Android
DataBinding
LiveData

LiveDataのDataBindingが失敗する


現象


  • こうやろうとしたら


SampleViewModel.kt

class SampleViewModel: ViewModel() {

val name = MutableLiveData<String>()
}


layout.xml

<android.support.v7.widget.AppCompatTextView

android:id="@+id/text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{viewModel.name}" />


  • こんなエラーが出た

[kapt] An exception occurred: android.databinding.tool.util.LoggedErrorException: Found data binding errors.


言い訳


  • ここに書いてあるし

Android Studio release notes  |  Android Developers


Updates to data binding

This update includes several improvements for data binding:

You can now use a LiveData object as an observable field in data binding expressions. The ViewDataBinding class now includes a new setLifecycle() method that you use to observe LiveData objects.



出来るはずだ!


  • サンプルプロジェクト作って試したときも出来た!!


原因



  • com.android.tools.build:gradle が3.0系だった

  • 3.1以上にしよう

dependencies {

classpath 'com.android.tools.build:gradle:3.1.3'
}

→諸事情でアップデートできない。ObservableFieldに変える。



  • 導入したいプロジェクトでミニマム実装して試さなきゃ駄目だ。