【问题标题】:How to resolve errors with the configuration of task ':app:kaptDebugKotlin'?如何解决任务':app:kaptDebugKotlin'的配置错误?
【发布时间】:2018-04-29 15:29:26
【问题描述】:

我正在尝试使用 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

这是模型视图的视图

 <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}"/>

我该如何解决这个问题?

【问题讨论】:

  • 请以文字形式发布您的错误,而不是外部图片

标签: android compiler-errors kotlin android-databinding


【解决方案1】:

我通过这种方式解决了这个错误

更新的视图模型 `

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}"/>

【讨论】:

  • 请将您的答案标记为解决问题的解决方案:)
【解决方案2】:

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

【讨论】:

  • 我刚刚以其他方式解决了我的问题,但感谢您的建议。
猜你喜欢
  • 2023-04-03
  • 1970-01-01
  • 2021-04-30
  • 2018-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-26
  • 2014-03-04
相关资源
最近更新 更多