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

Bru*_*uce 5 binding android kotlin

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

发现数据绑定错误....在类 com.edenhan.simplytask.CreateTaskForm 中找不到方法 addTask(java.lang.String,boolean)。

但是我确实在这个CreateTaskFormkotlin 类中添加了addTask 方法,所以不确定出了什么问题。

下面是片段类,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

    }
Run Code Online (Sandbox Code Playgroud)

下面是片段布局 fragment_create_task_form

<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)}"
            .../>
Run Code Online (Sandbox Code Playgroud)

kol*_*yna 0

发现数据绑定错误...在 com.edenhan.simplytask.CreateTaskForm 类中找不到方法 addTask(java.lang.String,boolean)。

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

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

我看到两个解决方案:

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

fun addTask(value: String, flag: Boolean) {
}
Run Code Online (Sandbox Code Playgroud)

其次,从xml中的函数字段直接调用:

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