不生成数据绑定类

时间:2018-01-07 15:39:50

标签: android data-binding

我正在研究一个Android编程书籍的例子。这本书是在有一个findViewById方法的时候编写的,所以我试图将它翻译成使用数据绑定。但是,在将必要的布局根和两个类路径添加到build.gradle文件之后,不会生成数据绑定类。

有没有人有任何想法,非常感谢帮助。

这是我的代码:

的build.gradle

buildscript {



repositories {
    google()
    jcenter()
}
dependencies {
    classpath 'com.android.tools.build:gradle:3.0.1'
    classpath 'com.android.tools.build:gradle:1.3.0'
    classpath "com.android.databinding:dataBinder:1.0-rc1"


    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}
}

allprojects {
repositories {
    google()
    jcenter()
}
}

task clean(type: Delete) {
delete rootProject.buildDir
}

活动布局

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android">

<data class="SudokuBinding">
    variable name="user" type="com.example.flash.sudoku.Sudoku"
</data>

<LinearLayout xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/background"
    android:orientation="horizontal"
    android:padding="30dip"
    tools:context="com.example.flash.sudoku.Sudoku">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical">

        <TextView
            android:id="@+id/textView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="25dip"
            android:gravity="center"
            android:text="@string/main_title"
            android:textSize="24.5sp" />

        <Button
            android:id="@+id/continue_button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/continue_label" />

        <Button
            android:id="@+id/new_button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/new_game_label" />

        <Button
            android:id="@+id/about_button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/about_label" />

        <Button
            android:id="@+id/exit_button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/exit_label" />

    </LinearLayout>

</LinearLayout>

</layout>

2 个答案:

答案 0 :(得分:1)

我猜您在 build.gradle

中缺少以下内容
dataBinding {
        enabled = true
    }

此外,您的布局文件应该包含在布局标记中,例如

    <layout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        >
<data class="SudokuBinding">
    variable name="user" type="com.example.flash.sudoku.Sudoku"
</data>

....your layout goes here...
....
....
....

</layout>

您可以在此处查看我的示例项目@ https://github.com/akhgupta/databindingDemo

答案 1 :(得分:0)

@ user182162 看起来你有两个版本的布局:一个用于横向,另一个用于纵向。 那些文件应该是唯一的。 两个文件都需要<layout></layout>作为根标记。

希望这有帮助。