Kotlin Android-在我的片段中数据绑定失败

Kotlin Android-在我的片段中数据绑定失败,android,binding,kotlin,Android,Binding,Kotlin,当我构建应用程序时(构建,但尚未运行), 我遇到生成错误: 发现数据绑定错误…找不到方法 类中的addTask(java.lang.String,布尔值) com.edenhan.simplytask.CreateTaskForm 但我确实在这个CreateTaskFormkotlin类中添加了Task方法,所以不确定出了什么问题 下面是片段类CreateTaskForm class CreateTaskForm:Fragment (){ var addTask:(String,Boolean

当我构建应用程序时(构建,但尚未运行), 我遇到生成错误:

发现数据绑定错误…找不到方法 类中的addTask(java.lang.String,布尔值) com.edenhan.simplytask.CreateTaskForm

但我确实在这个
CreateTaskForm
kotlin类中添加了Task方法,所以不确定出了什么问题

下面是片段类CreateTaskForm

class CreateTaskForm:Fragment (){

var addTask:(String,Boolean)-> Unit={s,b-> }

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, 
savedInstanceState: Bundle?): View? {

var binding:FragmentCreateTaskFormBinding = 
 DataBindingUtil.inflate(inflater,R.layout.fragment_create_task_form, container,false)
        binding.me=this
        return binding.root

    }
下面是片段布局片段创建任务表单

<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">
    <data>
        <variable name="me" type="com.edenhan.simplytask.CreateTaskForm">
       </variable>
</data>
    <android.support.constraint.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    <Button
            android:id="@+id/btnCreateTask"
            android:background="@android:drawable/ic_menu_add"
            android:onClick="@{(v)->me.addTask(`ds`,true)}"
            .../>

发现数据绑定错误…找不到方法 类中的addTask(java.lang.String,布尔值) com.edenhan.simplytask.CreateTaskForm

数据绑定在CreateTaskForm中找不到方法,可能无法将类函数字段识别为类方法

var addTask:(字符串,布尔)->Unit={s,b->}

我看到两种解决方案:

首先,将字段更改为CreateTaskForm中的函数:

fun addTask(value: String, flag: Boolean) {
}
第二,从xml中的函数字段直接调用:

 <Button
        android:id="@+id/btnCreateTask"
        android:background="@android:drawable/ic_menu_add"
        android:onClick="@{(v)->me.addTask.invoke(`ds`,true)}"
        .../>


你试过重建你的应用程序吗?var addTask:(String,Boolean)->Unit={s,b->}不应该是函数吗?我在这里看到过类似的事情Hi Sagar,谢谢你的回复。对我有清洁和重建。还是一样的错误Hi TapanHP。谢谢你的回复。对addTask是一个函数。它最终将由主活动的实际实现来设置。谢谢你的网址,我现在来看看是的。它的工作,在改变场功能后。但奇怪的是,为什么包含函数的字段不起作用。这是android限制吗?我之所以需要一个字段来保存函数,是因为该字段将由主活动设置。您可以将字段与函数一起保留,只需从字段me.addTask.invoke(
ds
,true)直接调用函数,因为Android自动生成的代码不知道Kotlin function fields.Hi。谢谢,我认为你的第二个解决方案对我有用!看起来我真的需要使用invoke函数。第一种解决方案不是必需的。