2017-01-07 1 views
1

私はAndroid Binding LibraryをKotlinと連携させるのに苦労しています。私が達成したいのは、PresenterクラスにonClickイベントを送出することです。私がやったことだった。AndroidバインディングライブラリとKotlinを使用してビューからonClickイベントをバインドする方法は?

  1. モジュールのGradleのファイルにデータバインディングを有効にする:dataBinding {enabled = true}
  2. インポートデータバインディングコンパイラ:kapt 'com.android.databinding:compiler:2.0.0-beta6'
  3. をスタブを生成:kapt {generateStubs = true}
  4. 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() 
    } 
    
  5. レイアウトの準備:

    <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> 
    

問題は、私はAPKを生成するとき、私はfollowin例外を取得するには、次のとおりです。

Error:Execution failed for task ':app:compileDebugJavaWithJavac'. 

java.lang.IllegalArgumentExceptionが非ヌルとして指定されたパラメータがnull:メソッドORG。 jetbrains.kotlin.annotation.RoundEnvironmentWrapper.getElementsAnnotatedWith、パラメータa

ご存知ですか?

+0

build.gradleファイルを貼り付けます。 –

答えて

0

まあ、this答えを以下のと使用するために世話をした後:

private fun initDataBinding() { 
     val binding: ActivityLoginBinding = DataBindingUtil.setContentView(this, R.layout.activity_login) 
     binding.presenter = mPresenter 
    } 

私はそれを動作させることができました。

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

としては、Data Binding Library official pageに指摘している私のためにいくつかの理由のdidntの仕事によって:問題は、私は結合のみ使用INITINGた、でした。

関連する問題