Это ошибка, которую я получил:
> Task :app:kaptDevDebugKotlin FAILED
location: package ...app.databinding
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:kaptDevDebugKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
> java.lang.reflect.InvocationTargetException (no error message)
Это мой пользовательский BindingAdapter:
@Suppress("unused")
object BindingAdapters {
@JvmStatic
@BindingAdapter(value = ["isVisible", "hide"], requireAll = false)
fun setVisible(view: View, show: Boolean?, hide: Boolean?) {
view.visibility = if (show != false) View.VISIBLE else if (hide != false) View.INVISIBLE else View.GONE
}
...
}
Использование в макете:
<include
layout="@layout/view_loading_small"
isVisible="@{viewModel.isLoading()}" ... />
Где:
private val _isLoading = MutableLiveData<Boolean>(false)
val isLoading: LiveData<Boolean> = _isLoading
Я не знаю, что происходит, я всегда использовал этот метод без проблем. Сегодня я добавил параметр «скрыть» и BAM KaptExecution InvocationTargetException
.
Единственный обходной путь - это изменить мой BindingAdapter
объект на:
@JvmStatic
@BindingAdapter(value = ["isVisible", "hide"], requireAll = false)
fun setVisible(view: View, show: Boolean?, hide: Boolean?) {
view.visibility = if (show != false) View.VISIBLE else if (hide != false) View.INVISIBLE else View.GONE
}
@JvmStatic
@BindingAdapter(value = ["isVisible"])
fun setVisible(view: View, show: Boolean) {
setVisible(view, show, false)
}
Но это не имеет смысла, не так ли requireAll = false
должен решить это? Что мне здесь не хватает?