我正在研究一个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>
答案 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>
作为根标记。
希望这有帮助。