Articles of android databinding

带菜单的Android数据绑定

我正在测试Android内置的新数据绑定function。 我已成功完成对文本视图的简单绑定,甚至是双向绑定,并将List绑定到RecyclerView 。 现在我想用菜单视图测试它,但是当我将布局XML文件添加到菜单文件夹时,我看到菜单和我添加的项目,但是当我用包装该菜单视图的内容时标签,它说“必须声明元素布局”。 我没有必要对我测试过的其他布局做出特别声明。 这表明你不能在菜单文件夹中使用布局。 是这样的,还是我错过了什么?

Android DataBinding和MVVM – 使用相同视图模型为不同条件使用相同的布局文件

我一直在开发一个带数据绑定和MVVM的应用程序。 我正试图在横向模式下为我的应用程序使用替代布局。 我有: layout/fragment_content.xml layout-land/fragment_content.xml 两种布局都具有不同外观的相同视图,并从相同的视图模型获取提要,如下所示: 两种布局都存在所有视图和id。 好吧,问题是,它不编译,错误只是”cannot find symbol method getViewModel”和getter为另一个variables。 到目前为止我尝试了什么: 使用布局和布局 – 土地文件夹(失败,错误在上面解释) 使用布局别名使用我在此处find的布局别名 问题199344:数据绑定不适用于布局别名 。 尝试这种方法时,我没有更改xml文件中的任何内容。 这也失败了,错误是Could not write to com.myapp.package.databinding.MyBinding 是否无法在多个布局文件中使用数据绑定data标记? 在使用数据绑定时,我应该使用什么来为不同的状态使用不同的布局? 谢谢 ! 编辑:删除class=”MyBinding”没有更改错误。

每次代码更改时都会重新生成DataBindingInfo.java

我正在研究相当大的多模块Android项目,该项目使用数据绑定,Dagger 2和Java与Kotlin混合。 在项目“代码”文件(.java和.kt文件包括活动,自定义类等)中稍有变化之后,构建时间很长(最多2分钟)。 即使我在添加新行等更改或在注释中修改一个字符时,也会发生这种情况。 我确实使用–info参数运行了Gradle脚本,得到了以下提示,它“挂起”在以下任务上: 为任务’:AppName:kaptDebugKotlin’构建缓存键是1a3a53e5f9b0934ab50a25c0133055f2最新检查任务’:AppName:kaptDebugKotlin’耗时0.0秒。 它不是最新的,因为:输入属性’source’文件/Users/username/Android/project-directory/AppName/build/generated/source/dataBinding/debug/android/databinding/layouts/DataBindingInfo.java已更改。 输入属性’source’文件/Users/username/Android/project-directory/AppName/src/main/java/com/package/to/my/activity/SomeActivity.java已更改。 DataBindingInfo.java是生成的文件,它只包含一个buildId: package android.databinding.layouts; import android.databinding.BindingBuildInfo; @BindingBuildInfo(buildId=”23567c57-d3c8-4999-bc79-6211351c7d89″) public class DataBindingInfo {} 每次代码中的任何更改时,buildId哈希都会更改。 该项目使用了Crashlytics,但我为调试版本禁用了它。 可能是这种行为的原因是什么? 编辑:即使Android Studio关闭,我正在项目中重新生成buildId,我正在外部编辑器中进行更改并从命令行运行构建。

应该在MVVM中的Activity / Fragment和ViewModel中做什么

我们公司一直在使用MVP模式开发Android应用程序。 使用MVP,我们将所有业务逻辑放在演示者中,然后Activity / Fragment负责在从演示者接收事件回调时查看更新。 现在,我们决定使用Android Databinding尝试MVVM。 看来,使用MVVM,我们可以将所有业务逻辑放在ViewModel中(就像MVP中的Presenter一样),并且还可以在一个对象中通知数据模型的任何更改视图。 但是,在我们的脑海中,这提出了一个问题,我们应该由Activity / Fragment处理什么呢? 因为我们采用MVP模式来避免脂肪活动/碎片 。 我们不希望有苗条活动/片段然后胖视图模型 。 到目前为止,我们认为我们可以通过Activity / Fragment来处理 请求/检查权限 访问上下文 访问资源 每个更正,评论或建议都是受欢迎的,因为我对MVVM很新,即使它似乎与MVP类似。 谢谢。 还有一点问题 将MVVM与监听器(如MVP)结合起来是否可行且做法良好? 例如 public class MainActivityViewModel extends BaseObservable { MainActivityViewModelListener listener; User user; public void setMainActivityViewModelListener(MainActivityViewModelListener listener) { this.listener = listener; } public void refreshUser(View v) { // some user update via Internet […]

Android数据绑定构建错误::无法设置数据绑定

我正在玩谷歌的Android数据绑定库,我曾经在那里工作过。 现在,似乎“某些东西”已经改变,并且它正在导致数据绑定库出现问题。 我被一个非常通用的错误所困扰,这个错误很难调试,一个[data binding plugin]: failed to setup data binding 。 AFAIK,当数据绑定库与您的某个布局文件有问题时(例如绑定中的拼写错误),会抛出此错误。 问题是,如何找出导致问题的布局文件? 有没有人有关于如何找出问题所在的任何提示/建议? 如果没有一次评论XML布局代码和Java代码文件,我有点不知道如何有效地解决这些types的问题。 我得到的唯一线索是Gradle控制台中这种非描述性的堆栈跟踪: [data binding plugin]: failed to setup data binding java.lang.NoSuchMethodError: android.databinding.tool.LayoutXmlProcessor.(Ljava/lang/String;Ljava/util/List;Landroid/databinding/tool/writer/JavaFileWriter;IZ)V at android.databinding.tool.DataBinderPlugin.attachXmlProcessor(DataBinderPlugin.java:274) at android.databinding.tool.DataBinderPlugin.createXmlProcessorForApp(DataBinderPlugin.java:231) at android.databinding.tool.DataBinderPlugin.createXmlProcessor(DataBinderPlugin.java:200) at android.databinding.tool.DataBinderPlugin.access$200(DataBinderPlugin.java:65) at android.databinding.tool.DataBinderPlugin$1.execute(DataBinderPlugin.java:156) at android.databinding.tool.DataBinderPlugin$1.execute(DataBinderPlugin.java:152) at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:93) at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:82) at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:44) at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:79) at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:30) at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93) at com.sun.proxy.$Proxy10.afterEvaluate(Unknown Source) at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfterEvaluate(LifecycleProjectEvaluator.java:67) […]

Android DataBinding错误。 找不到访问者

当我尝试运行我的应用程序时出现以下错误: Error:Execution failed for task ‘:app:compileDevelopmentDebugJavaWithJavac’. > java.lang.RuntimeException: Found data binding errors. ****/ data binding error ****msg:Could not find accessor java.lang.String.giftRecipientName redacted.xml loc:182:63 – 182:93 ****\ data binding error **** 我有一个Order对象,如下所示: public class Order { public Address address; // unrelated fields and methods } 嵌套的Address对象如下所示: public class Address { public String addressLine1; public String addressLine2; […]

如何在Android上为EditText数据绑定到onTextChanged?

在Yigit Boyar和George Mount关于Android数据绑定的讨论中,他们说明了绑定到TextWatcher的onTextChanged是多么容易(13:41)。 在按钮上。 他们的幻灯片错了吗? 首先, Button View没有onTextChanged属性。 它既没有setOnTextChanged方法。 EditText也不是。 但它们都有addTextChangedListener ,它将TextWatcher作为输入。 那他们在说什么呢? 他们是如何做到的呢? 他们的示例代码无法编译,但会出现此错误: Error:(17) No resource identifier found for attribute ‘onTextChanged’ in package ‘android’ 如何使用Android数据绑定框架绑定到任何View或特别是EditText上的“文本更改事件”?

数据绑定:如果属性不为null,则为set属性

无法理解……如果variables字段不为空,如何设置视图的某些属性? 例如 Item的某些字段可以为null,我不会不必要地调用布局视图的方法。 而且我不会得到NullPointerException 。 如果属性不为null,我该怎么设置属性? PS对不起英文。

Android Databinding xml重复属性

我最近开始开发一个使用数据绑定的android应用程序。 我现在的问题是因为这个错误我无法运行应用程序: Error:(10) Error parsing XML: duplicate attribute 使用数据绑定(我正在使用片段)在每个文件中发生错误。 我用Google搜索了3个小时,我找不到解决方案。 的build.gradle: apply plugin: ‘com.android.application’ android { dexOptions { preDexLibraries = false javaMaxHeapSize “2g” } compileSdkVersion 23 buildToolsVersion “23.0.3” defaultConfig { applicationId “at.blacktasty.schooltoolmobile” minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName “1.0” testInstrumentationRunner “android.support.test.runner.AndroidJUnitRunner” } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ } } dataBinding […]

数据绑定因NoSuchMethodError而失败

每当我尝试assemble应用assemble调试版本时更新到gradle 2.10后,我得到NoSuchMethodErrorexception。 以下是构建日志的相关部分: java.lang.RuntimeException: failure, see logs for details. cannot generate view binders java.lang.NoSuchMethodError: com.google.common.base.Strings.isNullOrEmpty(Ljava/lang/String;)Z at android.databinding.tool.util.StringUtils.capitalize(StringUtils.java:57) at android.databinding.tool.util.ParserHelper.toClassName(ParserHelper.java:23) at android.databinding.tool.store.ResourceBundle$LayoutFileBundle.getFullBindingClass(ResourceBundle.java:551) at android.databinding.tool.store.ResourceBundle$LayoutFileBundle.getBindingClassPackage(ResourceBundle.java:541) at android.databinding.tool.CompilerChef.pushClassesToAnalyzer(CompilerChef.java:124) at android.databinding.tool.CompilerChef.createChef(CompilerChef.java:73) at android.databinding.annotationprocessor.ProcessExpressions.writeResourceBundle(ProcessExpressions.java:148) at android.databinding.annotationprocessor.ProcessExpressions.onHandleStep(ProcessExpressions.java:82) at android.databinding.annotationprocessor.ProcessDataBinding$ProcessingStep.runStep(ProcessDataBinding.java:154) at android.databinding.annotationprocessor.ProcessDataBinding$ProcessingStep.access$000(ProcessDataBinding.java:139) at android.databinding.annotationprocessor.ProcessDataBinding.process(ProcessDataBinding.java:66) 如您所见,无法find方法com.google.common.base.Strings.isNullOrEmpty 。 一些细节 我使用Retrolambda 3.2.5和Java 8.没有其他额外的插件。 构建插件版本: com.android.tools.build:gradle:2.0.0 : com.android.tools.build:gradle:2.0.0 : com.android.tools.build:gradle:2.0.0 构建工具版本: 23.0.3 操作系统: OS X build.gradle看起来像这样。 […]