Tag: android databinding

Kotlin和Android数据绑定(BuildTools 2.0.0)

在我的Android项目中,我正在使用Kotlin和Android数据绑定。 它工作得很好,但现在我想更新Android Gradle插件到版本2.0.0-beta5。 在构建项目时,出现以下错误: 例外是在这里 java.lang.RuntimeException: failure, see logs for details. cannot generate view binders java.lang.NoSuchMethodError: kotlin.text.StringsKt.split$default(Ljava/lang/CharSequence;[Ljava/lang/String;ZII)Ljava/util/List; at android.databinding.tool.ext.ExtKt.androidId(ext.kt:76) at android.databinding.tool.writer.LayoutBinderWriterKt$readableName$2.invoke(LayoutBinderWriter.kt:99) at android.databinding.tool.writer.LayoutBinderWriterKt$readableName$2.invoke(LayoutBinderWriter.kt) at android.databinding.tool.ext.LazyExt.getValue(ext.kt:27) at android.databinding.tool.writer.LayoutBinderWriterKt.getReadableName(LayoutBinderWriter.kt) at android.databinding.tool.LayoutBinder.<init>(LayoutBinder.java:202) at android.databinding.tool.DataBinder.<init>(DataBinder.java:49) at android.databinding.tool.CompilerChef.ensureDataBinder(CompilerChef.java:81) at android.databinding.tool.CompilerChef.sealModels(CompilerChef.java:130) at android.databinding.annotationprocessor.ProcessExpressions.writeResourceBundle(ProcessExpressions.java:149) 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) at org.jetbrains.kotlin.annotation.AnnotationProcessorWrapper.process(AnnotationProcessorWrapper.kt:136) at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:793) at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:722) at com.sun.tools.javac.processing.JavacProcessingEnvironment.access$1700(JavacProcessingEnvironment.java:97) at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1029) […]

如何使用Fragment的数据绑定

我试图从官方的谷歌文档https://developer.android.com/tools/data-binding/guide.html数据绑定的例子 除了我试图将数据绑定应用于片段而不是活动。 我正在编译的错误 Error:(37, 27) No resource type specified (at 'text' with value '@{marsdata.martianSols}. onCreate的片段如下所示: @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); MartianDataBinding binding = MartianDataBinding.inflate(getActivity().getLayoutInflater()); binding.setMarsdata(this); } onCreateView的片段看起来像这样: @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return inflater.inflate(R.layout.martian_data, container, false); } 部分我的布局文件的片段如下所示: <?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> […]

升级Android Studio 2.3后DataBinding无法正常工作

DataBinding在我的项目中工作得很好,但今天升级Android Studio 2.3之后。 运行“应用程序”失败,因为以下错误: Error:(15, 40) Error: package com.javan.myrecorder.databinding not exist. import com.javan.myrecorder.databinding.FragmentEventsBinding; :app:compileMockDebugJavaWithJavac FAILED 我只是升级android工作室,并没有改变任何东西。 所有的插件是最新的! 现在我的问题是,为什么发生这个错误,我怎么能解决它? 任何帮助,欢迎! 英语不是我的母语; 请原谅我的错误。 EDIT1 像android项目googlesamples / android-architecture git checkout todo-databinding 然后运行./gradlew assembleDebug生成,由于以下错误生成失败: 完成建立日志 EDIT2 我已经解决了这个问题,因为在升级到Gradle 2.3之后破坏了数据绑定 。 在build.gradle(app)添加 apply plugin: 'com.android.application' apply plugin: 'com.neenbedankt.android-apt' ..balabala dependencies { apt 'com.android.databinding:compiler:2.3.0' } 我的项目中的一些文件: gradle-wrapper.properties #Mon Mar 06 10:59:04 CST […]

数据绑定和BaseObserver – Android MVVM

我有一个数据绑定到一个视图模型的文本框,就像这里的XML一样,我希望UI在点击cardView时更新txtProvider字段。 我应该如何通知我的viewmodel视图的变化? <layout xmlns:bind="http://schemas.android.com/tools"> <data> <variable name="viewmodel" type="io.leapingwolf.myapp.viewmodel.MyViewModel"/> <variable name="myModel" type="io.leapingwolf.myapp.models.MyModel"/> </data> <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:id="@+id/cardView" app:cardCornerRadius="5dp" app:cardUseCompatPadding="true" android:onClick="@{viewmodel.onClickModel}"> <TextView android:id="@+id/txtProvider" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:text="@{myModel.provider}" android:textColor="@android:color/black" android:textSize="15sp" /> </android.support.v7.widget.CardView> </layout> 在MyViewModel(它扩展BaseObserver类),我有 fun onClickModel() : View.OnClickListener { val viewOnClick = View.OnClickListener { v -> myModel!!.provider = "name changed" notifyPropertyChanged(BR.myModel) Toast.makeText(context,"clicked:" + myModel!!.provider […]

在子模块中的Android数据绑定

我有一个应用程序模块,让我们说“测试”。 “测试”模块依赖于子模块B.两者都启用数据绑定。 在库模块B中,我使用数据绑定创建一个简单的活动,其目的是为了重用,例如:我可以创建一个基本的登录屏幕,并在以后的许多应用程序中使用它。 以下是包装B中的示例代码。 package com.test.packageb open class MainActivity : AppCompatActivity() { lateinit var binding : ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = DataBindingUtil.setContentView(this, R.layout.activity_main) } } 然后在“测试”模块中,我可以简单地继承MainActivity类来定制事情,如下所示: class MainActivity1 : MainActivity(){ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) } fun doSomething(){ binding.rootLayout.setBackgroundResource(R.color.colorPrimary) } } 但是,当我尝试运行“测试”应用程序时,我得到了这个错误 错误:(17,9)无法访问类“com.test.packageb.databinding.ActivityMainBinding”。 检查您的模块类路径是否存在缺失或冲突的依赖关系 错误:(17,17)未解决的引用:rootLayout 我错过了什么? 还有什么需要实施吗? 测试应用程序build.gradle apply plugin: […]

DataBinding错误在android微调

我正在尝试设置双向绑定与Android的微调,但我得到以下错误。 引起:android.databinding.tool.util.LoggedErrorException:发现数据绑定错误。 **** /数据绑定错误****味精:无法找到属性“绑定:selectedValue”的值类型java.lang.String android.widget.Spinner **** \数据绑定错误的getter * 这是我的SpinnerBindingUtils public class SpinnerBindingUtils { @BindingAdapter(value = {"bind:selectedValue", "bind:selectedValueAttrChanged"}, requireAll = false) public static void bindSpinnerData(AppCompatSpinner pAppCompatSpinner, String newSelectedValue, final InverseBindingListener newTextAttrChanged) { pAppCompatSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { newTextAttrChanged.onChange(); } @Override public void onNothingSelected(AdapterView<?> parent) { } […]

android数据绑定单元测试错误解析数据绑定编译器选项失败。 PARAMS:

当我尝试为我的kotlin android项目设置单元测试时,遇到以下错误。 以前有没有遇到过这样的问题? 这已被标记为官方错误跟踪器的错误 失败:生成失败,出现异常。 * 什么地方出了错: 执行失败的任务':app:compileDebugUnitTestJavaWithJavac'。 > java.lang.RuntimeException:无法解析数据绑定编译器选项。 PARAMS: kapt.annotations:/Users/trevor/Dev/Android/workspace/gitlab-example/app/build/tmp/kapt/debugUnitTest/wrappers/annotations.debugUnitTest.txt kapt.kotlin.generated:/ Users / trevor / Dev / Android / workspace / gitlab-example / app / build / tmp / kapt / debugUnitTest / kotlinGenerated *尝试: 运行–info或–debug选项来获得更多的日志输出。 *例外是: org.gradle.api.tasks.TaskExecutionException:对于任务“:app:compileDebugUnitTestJavaWithJavac”,执行失败。 在org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:84) 在org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:55) 在org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62) 在org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58) 在org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88) 在org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:46) 在org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:51) 在org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54) 在org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) 在org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34) 在org.gradle.execution.taskgraph.DefaultTaskGraphExeter $ $ EventFiringTaskWorker $ […]

错误:执行失败的任务':app:kaptDemoTestingDebugKotlin'

我第一次使用kotlin并尝试在其中运行数据绑定。 我不断收到这个错误: 错误:执行任务':app:kaptDebugKotlin'失败。 内部编译器错误。 查看日志了解更多详情 我有我的build.gradle(模块:应用程序) apply plugin: 'com.android.application' apply plugin: 'kotlin-kapt' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' android { compileSdkVersion 26 defaultConfig { applicationId "in.pmock.practicemock" minSdkVersion 16 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { debug { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } […]

使用Android数据绑定在Kotlin中初始化RecyclerView会引发错误。 我究竟做错了什么?

描述 我正尝试在Kotlin中使用Android数据绑定的RecyclerView设置Android屏幕。 我有一个活动,其中包含一个片段和片段包含一个RecyclerView,我初始化与数据绑定。 问题是,当我尝试设置我的回收视图的布局管理器应用程序抛出一个IllegalStateException抱怨指定的孩子(我假设它意味着无论是RecyclerView或LayoutManager)已经有一个父母,我需要运行removeView )。 我试图从RecyclerView中删除所有视图,但无济于事。 这是我的活动: class HomeActivity : BaseActivity() { private lateinit var mBinding: ActivityHomeBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) mBinding = DataBindingUtil.setContentView(this, R.layout.activity_home) if(savedInstanceState != null){ return } val fragment = HomeFragment.newInstance() supportFragmentManager.beginTransaction().add(R.id.home_fragment_container, fragment).commit() } } 这是我的片段: class HomeFragment : BaseFragment() { private lateinit var mBinding: FragmentHomeBinding private lateinit var mRecyclerView: […]

android-kotlin错误:未解决的引用databinding&ActivityMainBinding

我正在使用Android Studio 3.0 Canary 6版本。 我在我的类中启用了dataBinding,代码不显示任何错误。 但是,当我构建APK时,构建失败并显示以下错误: Error:(8, 37) Unresolved reference: databinding Error:(22, 26) Unresolved reference: ActivityMainBinding Error:(38, 50) Unresolved reference: ActivityMainBinding Error:(43, 52) Unresolved reference: ActivityMainBinding Error:(46, 52) Unresolved reference: ActivityMainBinding Error:(49, 52) Unresolved reference: ActivityMainBinding Error:(52, 52) Unresolved reference: ActivityMainBinding Error:(55, 52) Unresolved reference: ActivityMainBinding Error:(58, 52) Unresolved reference: ActivityMainBinding Error:(61, 52) Unresolved […]