如何解决任务“:app:kaptDebugKotlin”的配置错误?
How to resolve errors with the configuration of task ':app:kaptDebugKotlin'?
我正在尝试使用 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}"/>
我该如何解决这个问题?
不确定您的错误究竟指向什么,但看起来库中已经定义了一个 SeekbarBindingAdapter
,因此您可能不需要定义自己的。如果您想在 progress
更改时更新内容,请覆盖 set
或使用 ObservableInt
和 OnPropertyChangedCallback
我是这样解决这个错误的
更新视图模型
`
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
}`
视图看起来像:
<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}"/>
我正在尝试使用 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}"/>
我该如何解决这个问题?
不确定您的错误究竟指向什么,但看起来库中已经定义了一个 SeekbarBindingAdapter
,因此您可能不需要定义自己的。如果您想在 progress
更改时更新内容,请覆盖 set
或使用 ObservableInt
和 OnPropertyChangedCallback
我是这样解决这个错误的
更新视图模型 `
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
}`
视图看起来像:
<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}"/>