現象
- こうやろうとしたら
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に変える。
- 導入したいプロジェクトでミニマム実装して試さなきゃ駄目だ。