未解决的参考:BR(Android Studio)
Unresolved reference: BR (Android Studio)
我的最高等级build.gradle:
buildscript {
ext.kotlin_version = '1.2.41'
ext.lifecycle_version = "1.1.1"
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
我的项目等级build.gradle:
android {
...
dataBinding {
enabled = true
}
}
dependencies {
...
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
implementation "android.arch.lifecycle:extensions:$lifecycle_version"
}
我还添加了 android.databinding.enableV2=true
到 gradle.properties 每个 Google 文档 (https://developer.android.com/topic/libraries/data-binding/start)
当我尝试 运行 时,它在我的 BaseViewHolder
class 中显示 Unresolved reference: BR
错误。似乎 BR
class 已正确生成,但当我将鼠标悬停在 class 名称上时,它还说在文件 .../R.java
中找到了重复的 class。我做错了什么?
fun bind(obj: Any) {
binding.setVariable(BR.obj, obj)
binding.executePendingBindings()
}
经过大量研究后发现,要使用数据绑定库,需要添加一些东西
项目build.gradle
buildscript {
ext {
compiler_version = '3.1.3'
}
dependencies {
classpath "com.android.tools.build:gradle:$compiler_version"
}
}
应用build.gradle
apply plugin: 'kotlin-kapt'
android {
dataBinding {
enabled = true
}
}
dependencies {
kapt "com.android.databinding:compiler:$compiler_version"
}
kapt {
generateStubs = true
}
我在添加数据绑定库后开始出现一些警告,例如 3rd-party Gradle plug-ins may be the cause
和 Classpath entry points to a non-existent location
。但是编译和运行正常
对于 Android Studio 3.3、Gradle 3.3.0 和数据绑定 v2,唯一需要添加以解决此问题的行是在您的(应用程序或模块)build.gradle
:
apply plugin: "kotlin-kapt"
Android Studio 无法自动导入我的 BR class。上面提供的所有解决方案都失败了。我只需要手动导入 class,Android studio 已正确创建它。
样本:
package your_packagename
import your_packagename.BR
import ...
...
我认为这是由于复制和粘贴造成的。当我手动输入 BR
时,Android Stdio 进行了自动导入。
我手动输入了行“binding.setVariable(BR.item, item)”,它对我有用。 Android工作室显示导入BR的建议。从您的项目中选择一个。还要在 gradle.
中启用 databinding = true
我的最高等级build.gradle:
buildscript {
ext.kotlin_version = '1.2.41'
ext.lifecycle_version = "1.1.1"
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
我的项目等级build.gradle:
android {
...
dataBinding {
enabled = true
}
}
dependencies {
...
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
implementation "android.arch.lifecycle:extensions:$lifecycle_version"
}
我还添加了 android.databinding.enableV2=true
到 gradle.properties 每个 Google 文档 (https://developer.android.com/topic/libraries/data-binding/start)
当我尝试 运行 时,它在我的 BaseViewHolder
class 中显示 Unresolved reference: BR
错误。似乎 BR
class 已正确生成,但当我将鼠标悬停在 class 名称上时,它还说在文件 .../R.java
中找到了重复的 class。我做错了什么?
fun bind(obj: Any) {
binding.setVariable(BR.obj, obj)
binding.executePendingBindings()
}
经过大量研究后发现,要使用数据绑定库,需要添加一些东西
项目build.gradle
buildscript {
ext {
compiler_version = '3.1.3'
}
dependencies {
classpath "com.android.tools.build:gradle:$compiler_version"
}
}
应用build.gradle
apply plugin: 'kotlin-kapt'
android {
dataBinding {
enabled = true
}
}
dependencies {
kapt "com.android.databinding:compiler:$compiler_version"
}
kapt {
generateStubs = true
}
我在添加数据绑定库后开始出现一些警告,例如 3rd-party Gradle plug-ins may be the cause
和 Classpath entry points to a non-existent location
。但是编译和运行正常
对于 Android Studio 3.3、Gradle 3.3.0 和数据绑定 v2,唯一需要添加以解决此问题的行是在您的(应用程序或模块)build.gradle
:
apply plugin: "kotlin-kapt"
Android Studio 无法自动导入我的 BR class。上面提供的所有解决方案都失败了。我只需要手动导入 class,Android studio 已正确创建它。
样本:
package your_packagename
import your_packagename.BR
import ...
...
我认为这是由于复制和粘贴造成的。当我手动输入 BR
时,Android Stdio 进行了自动导入。
我手动输入了行“binding.setVariable(BR.item, item)”,它对我有用。 Android工作室显示导入BR的建议。从您的项目中选择一个。还要在 gradle.
中启用 databinding = true