当前位置: 首页 > 知识库问答 >
问题:

Android数据绑定问题:“原因:无法猜测”

柴耀
2023-03-14

我正在使用添加启用数据绑定

数据绑定{启用=真}

卡普特公司。Android数据绑定:编译器:3.1.4'

在应用程序级别<代码>生成。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)

我怎样才能解决这个问题?有什么问题吗?

共有2个答案

端木飞
2023-03-14

尝试使用binding.set变量(BR. cis, user)thisbinding.setCis(user)

白祺然
2023-03-14

如https://stackoverflow.com/a/50115802/7407809中所述,您的模型类必须以大写字母开头。

 类似资料:
  • 我试图在回收器视图中使用数据绑定,我有问题。在data-variable上,我不能选择真正的类型(相反,我可以选择type作为默认包。然后我不能访问适配器类上的变量。我在适配器上得到的错误是:binding.curmovie=movie。我得到的错误是:不能访问类movieItem检查模块类路径是否缺少或冲突的依赖关系绑定 movieitem.kt文件 list_item.xml文件 moviea

  • 我尝试将属性和一些数据绑定到模板,但下面的代码不起作用。我需要的是呈现n个模板的数量取决于printedForms对象的数量,并在每个模板中实现来自适当对象的数据。请告诉我我的代码有什么问题。 注意:控制台中有如下警告:[Vue warn]:计算表达式“printedForm.docNumber”时出错:TypeError:无法读取未定义(在组件中找到)的属性“docNumber”) 我的VueJ

  • 我的布局名称是。我还看到了Android-DataBinding-绑定类将如何和何时生成?但这帮不了我。

  • 当我将android Studio 3.2.0更新为3.2.1时。我已经使用数据绑定,当运行项目时会显示这样的错误,如果我错了,请建议我。 要求:项目:应用 项目格拉德尔 应用程序。格拉德尔 如果我错了,请建议我。

  • 我有一个正在运行的Android Studio项目,也通过USB安装在我的智能手机上,它是一个简单的基本计算器。现在我必须为我所教的课程重写代码,但Android Studio拒绝此导入 该应用程序使用我在模块中启用的数据绑定:应用程序并重新同步所有内容。 旧的项目工作,新的没有,相同的代码,因为这个进口被拒绝。

  • 如何在JavaSpringBoot应用程序中从配置yml文件加载对象列表? 我已经尝试了几个来源: 配置-属性-在-Spring-引导 Spring Boot配置属性示例 SpringBoot 2的元素没有绑定 堆栈:Java11,SpringBoot 2.1.4,Lombok,. yml格式的配置文件。 我尝试实现简单的@Component,它将从配置文件加载数据。 配置值为: 用于数据加载的J