Articles of android databinding

DataBinding可以干扰本地化活动吗?

TL; DR 我有一个支持多种语言的应用程序。 尽管使用了所有常用的本地化方法,但仍未翻译一项活动。 它是应用程序中唯一充分利用DataBinding Activity。 完整的解释 我有一个使用DataBinding的Activity 。 基本上,该Activity的整个XML布局都包含在标记内。 这是我如何膨胀视图并获得绑定: SomeActivityBinding binding = DataBindingUtil.setContentView(this, R.layout.some_activity); XML有许多TextViews以这种方式设置文本: … android:text=”@string/” … 我们为用户提供预定义语言选项并使用设置应用程序区域设置 Locale.setDefault(new Locale(“”)); 在英语区域,一切都很完美。 当应用程序处于不同的语言环境时,相关活动中的字符串仍然以英语显示 – 即使这些字符串已被翻译为相应的语言,并且位于相同的字符串文件中,其他应用程序抓取字符串来自。 在该活动开始之前,应用程序很好 – 在活动开始后我退出它,应用程序将恢复到英语语言环境,直到它被杀死并重新启动。 如果从未打开该Activity,则app会按预期运行。 有谁知道可能导致这种情况的原因是什么? 谢谢。

长gradle构建时间 – Android

我有一个多模块的项目。 我使用kotlin + dagger 2 + databindingv2 。 使用最新的3.2 android studio 。 但每当我通过在一个模块中更改某些内容来执行incremental build ,生成的其他模块(不依赖于已更改的模块)数据绑定类会发生更改,从而在该模块上调用kapt。 从而增加了构建时间。 Input property ‘annotationProcessorOptionProviders$kotlin_gradle_plugin.$0.$0.buildDir’ file /build/intermediates/data-binding/debug/compiler/dependent-lib-artifacts/ ***-setter_store.bin has changed. 有人遇到过这个问题吗? 对此有什么解决方法吗?

Android Studio显示警告:此处不允许元素合并

我基于LinearLayout创建自定义视图。 类扩展了LinearLayout类,我在布局中有: some staff here Android Studio显示警告Element merge is not allowed here ,但应用程序有效。 怎么了?

Android数据绑定,无法生成视图绑定器

我正在使用android-data-binding库,我将build.gradle的依赖项设置为: classpath ‘com.android.tools.build:gradle:1.3.0’ classpath “com.android.databinding:dataBinder:1.0-rc4” 我收到了这些错误,检查了几个引导但不知道是什么导致这个,因为它太抽象,不知道它是我的xml文件中缺少的variables,还是我的viewmodel中缺少的函数。 有提示吗? 谢谢 Error:Execution failed for task ‘:app:compileDebugJavaWithJavac’. > java.lang.RuntimeException: failure, see logs for details. cannot generate view binders java.lang.NullPointerException at android.databinding.tool.reflection.ModelAnalyzer.loadClassErasure(ModelAnalyzer.java:302) at android.databinding.tool.reflection.ModelAnalyzer.getObservableFieldTypes(ModelAnalyzer.java:288) at android.databinding.tool.reflection.ModelClass.isObservableField(ModelClass.java:194) at android.databinding.tool.expr.FieldAccessExpr.resolveType(FieldAccessExpr.java:232) at android.databinding.tool.expr.Expr.getResolvedType(Expr.java:308) at android.databinding.tool.BindingTarget.resolveMultiSetters(BindingTarget.java:140) at android.databinding.tool.LayoutBinder.(LayoutBinder.java:210) at android.databinding.tool.DataBinder.(DataBinder.java:49) at android.databinding.tool.CompilerChef.ensureDataBinder(CompilerChef.java:52) at android.databinding.tool.CompilerChef.sealModels(CompilerChef.java:84) at android.databinding.annotationprocessor.ProcessExpressions.writeResourceBundle(ProcessExpressions.java:123) at android.databinding.annotationprocessor.ProcessExpressions.generateBinders(ProcessExpressions.java:93) at android.databinding.annotationprocessor.ProcessExpressions.onHandleStep(ProcessExpressions.java:67) at android.databinding.annotationprocessor.ProcessDataBinding$ProcessingStep.runStep(ProcessDataBinding.java:144) at android.databinding.annotationprocessor.ProcessDataBinding$ProcessingStep.access$000(ProcessDataBinding.java:129) […]

任务之间的Gradle依赖性

因此,自从添加新的Room android架构库以来,这已经开始发生。 我遇到了AppDatabase_Impl不存在的问题,我通过将kapt添加到注释中来修复: Android Room Persistences库和Kotlin Kotlin中的Room Persistence lib实现 Kotlin中的Room Persistence lib实现(Gradle错误) 我有其他错误,我怀疑是由于AS,Kotlin和Java 8,所以我尝试更新到AS 3.0 我在尝试构建时遇到以下错误: Information:Gradle tasks [:app:generateDebugSources, :app:generateDebugAndroidTestSources, :app:mockableAndroidJar, :app:compileDebugSources, :app:compileDebugAndroidTestSources, :app:compileDebugUnitTestSources, :cryptocurrency-icons:generateDebugSources, :cryptocurrency-icons:mockableAndroidJar, :cryptocurrency-icons:generateDebugAndroidTestSources, :cryptocurrency-icons:compileDebugSources, :cryptocurrency-icons:compileDebugUnitTestSources, :cryptocurrency-icons:compileDebugAndroidTestSources] Error:Circular dependency between the following tasks: :app:compileDebugKotlin +— :app:dataBindingExportBuildInfoDebug | \— :app:compileDebugKotlin (*) \— :app:kaptDebugKotlin \— :app:dataBindingExportBuildInfoDebug (*) (*) – details omitted (listed previously) Information:BUILD […]

如何在Android Studio 3.0.0中使用数据绑定和Kotlin

我刚刚开始使用Android Studio 3.0.0,但每次我尝试构建我的项目时都会收到此错误: Error:Circular dependency between the following tasks: :app:compileDebugKotlin +— :app:dataBindingExportBuildInfoDebug | \— :app:compileDebugKotlin (*) \— :app:kaptDebugKotlin \— :app:dataBindingExportBuildInfoDebug (*) (*) – details omitted (listed previously) 我在用 kapt “com.android.databinding:compiler:2.2.0” 在我使用之前 androidProcessor “com.android.databinding:compiler:2.2.0” 它工作得很好……我做错了什么? 谢谢!

在’/activity_login.xml’DataBinding文件中find重复的类,未生成BR

我大多陷入了android数据绑定BR问题。 始终存在单个activity.xml,但生成的绑定类显示错误。 请让我知道如何解决此问题。

Picasso绑定适配器’连接被泄露’消息

我正在使用绑定适配器在回收器视图中加载图像。 图像显得很好。 快速滚动时,我注意到有时候我从毕加索那里得到了“连接泄露”的消息。 问题来自死图像链接,硬编码我的所有图像url指向无处不在为屏幕上的第一对滚动后的每个图像产生错误。 W/OkHttpClient: A connection to https://s3-eu-west-1.amazonaws.com/ was leaked. Did you forget to close a response body? 代码与此示例基本相同。 BindingUtils.kt object BindingUtils { @BindingAdapter(“imageUrl”) @JvmStatic fun setImageUrl(imageView: ImageView, url: String) { Picasso.with(imageView.context).load(url).into(imageView) } XML gradle这个 implementation “com.squareup.retrofit2:retrofit:$rootProject.retrofitVersion” implementation “com.squareup.retrofit2:adapter-rxjava2:$rootProject.retrofitVersion” implementation “com.squareup.retrofit2:converter-gson:$rootProject.retrofitVersion” implementation “com.squareup.okhttp3:logging-interceptor:$rootProject.okhttpLoggingVersion” implementation “com.squareup.picasso:picasso:$rootProject.picassoVersion” retrofitVersion = ‘2.3.0’ okhttpLoggingVersion = ‘3.6.0’ picassoVersion = ‘2.5.2’ […]

使用数据绑定库更新UI

语境: 我正在使用新数据绑定库的 v1.0-rc1。 我有以下视图模型: public class DrawerPageHeaderViewModelImpl extends BaseObservable implements DrawerPageHeaderViewModel { @Nullable private Location currentLocation; public DrawerPageHeaderViewModelImpl(@Nullable final Location currentLocation) { this.currentLocation = currentLocation; } @Bindable @Nullable @Override public String getDistanceDisplayString() { if (currentLocation == null) { return null; } float[] results = new float[1]; Location.distanceBetween(landmark.getLatitude(), landmark.getLongitude(), currentLocation.getLatitude(), currentLocation.getLongitude(), results); final float metersToTargetLocation = […]

将BindingAdapter与资源中的字符串数组一起使用

我有一个几乎简单的想法:我想为带有数据绑定API和BindingAdapter的微调器生成一个适配器。 这是我想要使用的XML: 这里的地址是一个简单的类,它有一个名为country的字段,它是一个字符串,包含一个ISO-3166-2字符串。 为了简单起见,值将为“DE”或“US”。 这是我简化的arrays.xml : DE US @string/country_DE @string/country_US 对于绑定我写了这个BindingAdapter: @BindingAdapter({“value”, “data”, “keys”}) public static void generateAdapter(Spinner spinner, String value, @ArrayRes int data, @ArrayRes int keys) { } 当我尝试编译代码时,我收到此错误: 错误:任务’:app:compileDebugJavaWithJavac’的执行失败。 java.lang.RuntimeException:发现数据绑定错误。 **** /数据绑定错误****消息:标识符必须具有XML文件中的用户定义types。 各国都错过了它 文件:路径/到/的/微调,above.xml 当地:95:31-95:39 **** \数据绑定错误**** 我的xml的第95行是这一行: app:value=”@{address.country}” 你看到我做错了吗? 顺便说一句,我不确定与数组资源相关的注释是否正确? 我发现无法将其限制为字符串数组。