【问题标题】:DataBinding is not working Android Studio 4.1数据绑定不起作用 Android Studio 4.1
【发布时间】:2021-02-22 20:48:54
【问题描述】:

我正在使用 Android Studio 4.1 和 Gradle gradle-6.5-all 无法使用 DataBinding。

SDK 版本

compileSdkVersion 30
buildToolsVersion "30.0.2"

minSdkVersion 16
targetSdkVersion 30

下面是我的 XML、BindingAdapter 和 build.gradle 代码。

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-android-extensions'
    id 'kotlin-kapt'
    id "androidx.navigation.safeargs.kotlin"
}

android {
    ....
    buildFeatures {
         viewBinding true
         dataBinding true
    }
}
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <androidx.appcompat.widget.AppCompatTextView
            android:id="@+id/stepText"
            android:layout_width="40dp"
            android:layout_height="40dp"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:stepBackground="@{1}"
            android:text="1"
            android:textAllCaps="true"
            android:textColor="@android:color/black"
            android:textSize="20sp"
            android:padding="20dp"/>

    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>
@BindingAdapter("stepBackground")
fun stepBackground(view: View, type: Int?) {
    Timber.e("stepBackground ${view.background}")
    type?.let {
        when(it) {
            1 -> view.setBackgroundResource(R.drawable.white_shape_circle)
            2 -> view.setBackgroundResource(R.drawable.red_shape_circle)
            else -> view.setBackgroundResource(R.drawable.grey_shape_circle)
        }
    }
}

在上面的代码中,我尝试根据步数应用动态背景。但这里没有应用背景。我还设置了断点来检查 BindingAdapter 方法是否正在调用。但是 Debugger 不会去 BindingAdapter 方法。

我可以知道这里缺少什么吗?

【问题讨论】:

  • 尝试调用stepBackground="@{1}" 而不是app:stepBackground="@{1}"
  • 您是否确认setBackgroundResource 是在您的情况下调用的正确方法?其他选项是 setBackground setBackgroundDrawable ..

标签: android kotlin android-databinding android-viewbinding android-binding-adapter


【解决方案1】:

在应用级构建 Gradle 中添加以下行,然后清理项目->重建项目。 它对我有用

 dataBinding {
    enabled = true
}

kapt {
    generateStubs = true
}

【讨论】:

    猜你喜欢
    • 2016-12-11
    • 1970-01-01
    • 2017-07-23
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-23
    • 1970-01-01
    相关资源
    最近更新 更多