Я создал пользовательский SeekBar, который расширяет android.widget.Seekbar
:
data class Range(val min: Int, val max: Int, private val defaultIncrement: Int) {
val increment = if ((max - min) < defaultIncrement) 1 else defaultIncrement
}
internal fun Range.toSeekbarMaximum(): Int = (max - min) / increment
class RangeSeekBar: SeekBar {
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet) : super(context, attrs)
init {
range = Range(0, 100, 1)
}
var range: Range
set(value) {
max = value.toSeekbarMaximum()
}
override fun setProgress(progress: Int) = super.setProgress((progress - range.min) / range.increment)
override fun getProgress(): Int = range.min + super.getProgress() * range.increment
}
Я получил NPE, когда запускаю коды, сначала выполняется constructor
, а затем переходит к setProgress
, он завис, потому что range
равен нулю. Блок init
не выполняется после constructor
, что-то не так? Спасибо