yen*_*rah 8 android android-databinding
我尝试在现有项目中使用数据绑定,但我无法构建它.
在项目中使用build.gradle:
dependencies {
classpath 'com.android.tools.build:gradle:1.3.1'
//Data Binding Beta
classpath "com.android.databinding:dataBinder:1.0-rc4"
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.7+'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
Run Code Online (Sandbox Code Playgroud)
应用
apply plugin: 'com.android.databinding'
apply plugin: 'com.neenbedankt.android-apt'`
Run Code Online (Sandbox Code Playgroud)
在模块中:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
apt 'com.android.databinding:compiler:1.0-rc1+'
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用数据绑定与RecyclerView/Fragment/ViewHolder/Adapter ..我使用Android Studio 1.4.1.使用compileSdkVersion 23和buildToolsVersion"23.0.1".我尝试了没有apt,不同的gradle版本,证明读取我的classes/xml ..我还使用Butterknife(因为我的项目太大而不能一次更改所有内容)和其他(但不相关)库.我同步并重建了我的项目,我关闭/打开了Android Studio,我试图使缓存无效.我从一开始就构建了一个"新鲜"的例子.
我的"数据类"中的getter方法是@Bindable.
此外,未创建数据绑定包.(错误消息说它不存在)和Error:cannot generate view binders java.lang.StringIndexOutOfBoundsException: String index out of range: -21
Den*_*nny 11
对于 AndroidX 项目:
迁移到 androidx 后我遇到了这个问题,这就是我解决它的方法。
但如果错误仍然存在,请在导入中添加以下代码,然后重新构建项目。
import androidx.databinding.library.baseAdapters.BR;
Run Code Online (Sandbox Code Playgroud)我有类似于你的DataBinding有不同的问题,例如Android Studio无法找到生成的Binding类,如"MainActivityBinding".重启Android Studio为我解决了这个问题.
对于BR类,我遇到了无法找到它们的问题,但通常是因为我在布局类中犯了一个错误.例如绑定到不存在的字段.确保其他所有内容都正确无误,然后重新启动Android Studio.
我很长时间以来都在使用数据绑定,并且我提出了一些要点,这也可以对您有所帮助。
这个答案将帮助您在类中生成ViewDataBinding、BindingResource(BR)类和布局变量ViewDataBinding。
(1)您应该在build.gradle. 如果没有,则添加此和Sync。
android {
...
dataBinding {
enabled = true
}
...
}
Run Code Online (Sandbox Code Playgroud)
(2)现在,如果您想要生成数据绑定类,那么您应该用数据绑定(标签)包装xml layout<layout。像这样的东西。
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.constraint.ConstraintLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)
(3)现在应该生成您的数据绑定类。
如果您的布局名称采用蛇形命名法,则数据绑定类将以 驼峰式命名
activity_main.xml法生成,例如.ActivityMainBinding
有时,当您键入时ActivityMai...,它不会显示建议,但这并不意味着没有生成类。在这种情况下,您应该输入预期生成的类的全名。像类型一样ActivityMainBinding,它会显示导入弹出窗口。(这就是我多次遇到的情况。)
(4)如果仍然没有生成你的类。(有时当我们粘贴布局文件时,就会发生这种情况)。然后从中重建项目Build> Rebuild(不是构建或创建项目)。它将生成您的数据绑定类。(重建对我来说总是很神奇。)
(5)<variable如果您在布局中创建了一个,并且它没有在数据绑定类中显示其 setter 和 getter,则按照第 4 点进行操作。
(6)如果您的类没有生成,那么您应该检查构建是否由于布局文件中的错误而失败。成功构建后将生成数据绑定类。
这就是我为解决数据绑定错误所做的全部工作。如果您还有任何问题,可以在这里发表评论。
Error:cannot generate view binders java.lang.StringIndexOutOfBoundsException: String index out of range: -21当我尝试将 aObservableList与自定义对象一起使用时,几乎每次都会遇到错误。但我发现,几乎每次我都会忘记>我的类型。愚蠢的我。所以,我的解决方案是检查它:
<data>
<import type="android.databinding.ObservableArrayList"/>
<variable
name="dices"
type="ObservableArrayList<Dice>" /> //don't forget the '>' after Dice
</data>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12886 次 |
| 最近记录: |