如何使用Android绑定库和Kotlin从视图绑定onClick事件?

如何使用Android绑定库和Kotlin从视图绑定onClick事件?,android,data-binding,kotlin,android-databinding,Android,Data Binding,Kotlin,Android Databinding,我正努力与科特林合作。我想要实现的是将onClick事件分派给我的Presenter类。我所做的是: 在模块的gradle文件上启用数据绑定:databinding{enabled=true} 导入数据绑定编译器:kapt'com.android。数据绑定:编译器:2.0.0-beta6' 生成存根:kapt{generateStubs=true} MainPresenter.kt上的实现方法: fun onClickEditProfile () { log("method you ho

我正努力与科特林合作。我想要实现的是将onClick事件分派给我的Presenter类。我所做的是:

  • 在模块的gradle文件上启用数据绑定:
    databinding{enabled=true}
  • 导入数据绑定编译器:
    kapt'com.android。数据绑定:编译器:2.0.0-beta6'
  • 生成存根:
    kapt{generateStubs=true}
  • MainPresenter.kt上的实现方法:

    fun onClickEditProfile () {
        log("method you hoped to get called was called")
        mView!!.getContext().snackbar("received event: onClickEditProfile via data binding, this is awesome").show()
    }
    
  • 准备布局:

    <layout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">
        <data>
            <variable
                name="presenter"
                type="br.com.tyllt.presenter.MainPresenter" />
        </data>
            <com.github.clans.fab.FloatingActionButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="@{() -> presenter.onClickEditProfile()}"
                android:src="@drawable/ic_edit"
                app:fab_colorNormal="@color/colorPrimary"
                app:fab_colorPressed="@color/colorPrimaryDark"
                app:fab_hideAnimation="@anim/fab_scale_down"
                app:fab_label="Edit Profile"
                app:fab_size="mini" />
    </layout>
    
    java.lang.IllegalArgumentException:指定为非null的参数为null:方法org.jetbrains.kotlin.annotation.RoundEnvironmentWrapper.getElementsAnnotatedWith,参数a

    有什么想法吗?

    好吧,在回答以下问题并注意使用后:

    private fun initDataBinding() {
            val binding: ActivityLoginBinding = DataBindingUtil.setContentView(this, R.layout.activity_login)
            binding.presenter = mPresenter
        }
    
    我能让它工作。问题是,我只是使用以下方法初始化绑定:

    MainActivityBinding binding = MainActivityBinding.inflate(getLayoutInflater());
    

    正如上面所指出的,由于某种原因,它对我不起作用。

    粘贴build.gradle文件
    MainActivityBinding binding = MainActivityBinding.inflate(getLayoutInflater());