如何通过配置任务来解决错误':app:kaptDebugKotlin'?

时间:2018-04-29 15:29:27

标签: android compiler-errors kotlin android-databinding

我正在尝试使用dataBinding在Kotlin中构建Android应用程序,当我尝试编译此代码时

@Bindable
var progress:Int=1

@NotNull
@InverseBindingAdapter(attribute = "progress")
 fun  SeekBar.getProgress():Int{
    return this.progress
}

@BindingAdapter(value = ["progressAttrChanged"])
fun setListeners(seekBar: SeekBar,inverseBindingListener: InverseBindingListener){
    var listener=object: SeekBar.OnSeekBarChangeListener{
        override fun onProgressChanged(seekBar: SeekBar?, Progress: Int, fromUser: Boolean) {
            progress=Progress
            mBeatBox.mRange=progress/66.67 as Float
            inverseBindingListener.onChange()
        }

        override fun onStartTrackingTouch(seekBar: SeekBar?) {

        }

        override fun onStopTrackingTouch(seekBar: SeekBar?) {

        }
    }
    seekBar.setOnSeekBarChangeListener(listener)
}

我收到此错误https://ibb.co/cBHRwx

以下是modelView

的视图
 <data>
    <variable
        name="viewModel"
        type="com.bignerdranch.android.beatboxkotlin.Models.BeatBoxViewModel"/>
</data>
....
 <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:text="progres"
        android:gravity="center"
        android:layout_weight="9"/>
    <android.support.v7.widget.AppCompatSeekBar
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="9"
        app:progress="@={viewModel.progress}"/>

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

我用这种方式解决了这个错误

更新了viewModel `

var progress:Int=mBeatBox.mRange.toInt()
@Bindable set(value){field=value;notifyChange()}
@Bindable get()=field

fun getEditListener():SeekBar.OnSeekBarChangeListener{
var listener=object: SeekBar.OnSeekBarChangeListener{
        override fun onProgressChanged(seekBar: SeekBar?, Progress: Int, fromUser: Boolean) {
            progress=Progress
            mBeatBox.mRange=(progress/66.67).toFloat()
        }
        override fun onStartTrackingTouch(seekBar: SeekBar?) {
        }
        override fun onStopTrackingTouch(seekBar: SeekBar?) {
        }
    }
    return listener
}`

View看起来像:

 <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:text="progress"
        android:gravity="center"
        android:layout_weight="9"
        android:text="@{String.valueOf(viewModel.progress)}"/>
    <android.support.v7.widget.AppCompatSeekBar
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="9"
        app:OnSeekBarChangeListener="@{viewModel.EditListener}"/>

答案 1 :(得分:0)

不确定您的错误指向的是什么,但看起来库中已经定义了SeekbarBindingAdapter,因此您可能不需要定义自己的错误。如果您想在progress更改时更新内容,请覆盖set或将ObservableIntOnPropertyChangedCallback

一起使用