我在我的项目中使用数据绑定,当使用时<layout>,<data>我的xml绑定类中没有生成.
例如,我有activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data> </data>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
</RelativeLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)
现在,如果我ActivityMainBinding在我的活动/片段中写入,则显示该类不可用的错误.但是<variable>在我的xml文件中包含它后,它能够生成ActivityMainBinding类.
Android Studio:2.1.3
Classpath:com.android.tools.build:
grad :2.1.3
minSdkVersion 16
targetSdkVersion 24
buildToolsVersion 24.0.0
By default, a Binding class will be generated based on the name of the layout
file, converting it to Pascal case and suffixing “Binding” to it.
The above layout file was activity_main.xml so the generate class was ActivityMainBinding.
Run Code Online (Sandbox Code Playgroud)
什么时候会生成Binding类,比如说ActivityMainBinding.我有编译时错误."无法解析ActivityMainBinding".
ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.main_activity);
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏.谢谢
今天我将我的 android studio 3.5.3 更新到了 3.6。现在,我无法生成任何数据绑定类。Android studio 它自己生成数据绑定-iml 文件。
有没有人遇到过这样的问题?
Gradle wrapper.properties:
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
Run Code Online (Sandbox Code Playgroud)
项目级gradle文件:
dependencies {
classpath 'com.android.tools.build:gradle:3.5.3'
}
Run Code Online (Sandbox Code Playgroud)
应用级gradle文件:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'androidx.navigation.safeargs'
android {
dataBinding {
enabled = true
}
// Using Lambda Expressions
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
}
Run Code Online (Sandbox Code Playgroud)
gradle.properties:
kotlin.code.style=official
android.databinding.enableV2=true
kotlin.incremental=true
kapt.incremental.apt=true
Run Code Online (Sandbox Code Playgroud)
下面是我的活动和 XML 文件: 活动:
class ActivityMain : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) { …Run Code Online (Sandbox Code Playgroud) 我已经更新了一个 Android Studio 3.6,然后它向我显示了一个错误“未解析的引用:ActivityMainBinding”。但我想知道该项目仍然与以前的 android studio 版本一样工作。只是给了我一个错误“未解析的参考:ActivityMainBinding”。
data-binding android kotlin android-databinding android-studio-3.6