android - Android数据绑定问题:“原因:无法猜测”
问题描述
我通过添加启用数据绑定
数据绑定 { 启用 = true }
和
kapt 'com.android.databinding:compiler:3.1.4'
在应用程序级别build.gradle
文件中。
应用插件:'kotlin-kapt'
最重要的是添加。项目基于 kotlin 。
这是我的模型:
package ir.app.myapplication;
data class cisclass(val equRevId:String)
主要活动 :
val binding: ActivityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main)
val user = cisclass("123")
binding.setVariable(BR.cis, user)
binding.executePendingBindings()
这是我的布局:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
>
<data>
<variable
name="cis"
type="ir.app.myapplication.cisclass" />
</data>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:orientation="vertical"
android:scrollbars="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:text="@{cis.equRevId}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
/>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</layout>
我会收到这个错误:
java.lang.IllegalArgumentException: couldn't make a guess for ir.meedc.myapplication.cisclass
at com.squareup.javapoet.Util.checkArgument(Util.java:64)
at com.squareup.javapoet.ClassName.bestGuess(ClassName.java:171)
at android.databinding.tool.ext.ExtKt.toTypeName(ext.kt:244)
at android.databinding.tool.ext.ExtKt.toTypeName(ext.kt:192)
at android.databinding.tool.ext.ExtKt.toTypeName(ext.kt:173)
at android.databinding.tool.writer.BaseLayoutBinderWriter.createVariableFields(BaseLayoutBinderWriter.kt:229)
at android.databinding.tool.writer.BaseLayoutBinderWriter.access$createVariableFields(BaseLayoutBinderWriter.kt:39)
at android.databinding.tool.writer.BaseLayoutBinderWriter$createType$1.invoke(BaseLayoutBinderWriter.kt:67)
at android.databinding.tool.writer.BaseLayoutBinderWriter$createType$1.invoke(BaseLayoutBinderWriter.kt:39)
at android.databinding.tool.ext.Javapoet_extKt.classSpec(javapoet_ext.kt:39)
at android.databinding.tool.writer.BaseLayoutBinderWriter.createType(BaseLayoutBinderWriter.kt:63)
at android.databinding.tool.writer.BaseLayoutBinderWriter.write(BaseLayoutBinderWriter.kt:59)
at android.databinding.tool.BaseDataBinder.generateAll(BaseDataBinder.kt:65)
at com.android.build.gradle.internal.tasks.databinding.DataBindingGenBaseClassesTask$CodeGenerator.run(DataBindingGenBaseClassesTask.kt:212)
at com.android.build.gradle.internal.tasks.databinding.DataBindingGenBaseClassesTask$writeBaseClasses$$inlined$recordTaskAction$1.invoke(AndroidVariantTask.kt:52)
at com.android.build.gradle.internal.tasks.databinding.DataBindingGenBaseClassesTask$writeBaseClasses$$inlined$recordTaskAction$1.invoke(AndroidVariantTask.kt:31)
at com.android.build.gradle.internal.tasks.Blocks.recordSpan(Blocks.java:91)
我该如何解决?有什么问题?
解决方案
如https://stackoverflow.com/a/50115802/7407809中所述, 您的模型类必须以大写字母开头。
推荐阅读
- python - 如何在不导入主文件的情况下从另一个文件调用函数?
- javascript - 带有 GatsbyJS 的 Netlify 表单跳过输入字段之一
- typescript - 无法使 TypeScript 泛型链工作
- excel - 带有 AND/OR 函数的 VBA Excel If 语句
- c# - GTK Sharp 同步上下文似乎不存在,默认情况下会中断 async/await
- python - 给定一个数据集,查找它是否是批处理的
- javascript - CRUD - 我无法使用 express 和 mongodb 插入数据
- vue.js - 无法读取未定义的属性“_wrapper”-使用 vue 多选
- visualization - 来自gensim的pyLDAvis可视化未在google colab中显示结果
- delphi - 从 Delphi 10.3 中的 TWebBrowser OnNavigateError 中提取 StatusCode