I have implemented a TextWatcher for my EditText
txt_height!!.addTextChangedListener(object : TextWatcher {
override fun beforeTextChanged(charSequence: CharSequence, i: Int, i1: Int, i2: Int) {
isExecuteSeekbar = false
}
override fun onTextChanged(charSequence: CharSequence, i: Int, i1: Int, i2: Int) {}
override fun afterTextChanged(editable: Editable) {
var height = txt_height!!.text.toString().trim { it <= ' ' }
if (height.equals(".", ignoreCase = true))
txt_height!!.setText("2.0")
height = txt_height!!.text.toString().trim { it <= ' ' }
if (!sh!!.check_blank_data(height) && isExecute) {
val h = height.toFloat()
if (rdo_feet!!.isChecked) {
for (k in height_feet_lst.indices) {
if (height.equals(height_feet_lst[k], ignoreCase = true)) {
pickerFeet!!.selectedItem = k
break
}
}
} else {
for (k in height_cm_lst.indices) {
if (h == height_cm_lst[k].toFloat()) {
pickerCM!!.selectedItem = k
break
}
}
}
saveData()
}
isExecuteSeekbar = true
}
})
This line generates the error
val h = height.toFloat()
Debugging the code I noticed that the height variable is equivalent to "interface kotlin.jvm.functions.Function0", the default for the edit text is "175" but this txt_height!!.text.toString().trim { it <= ' ' } return me "interface kotlin.jvm.functions.Function0"
Maybe I did something wrong?
EDIT
Using of txt_height
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
initHeight()
body()
}
fun initHeight() {
heightList.clear()
for (k in 60..240) {
heightList.add("" + k)
}
val st = arrayOfNulls<CharSequence>(heightList.size)
for (k in heightList.indices) {
st[k] = "" + heightList[k]
}
picker!!.values = st
picker!!.sideItems = 1
picker!!.setOnItemSelectedListener { index ->
txt_height!!.setText(st[index])
}
}
fun body(){
if (!sh!!.check_blank_data(SharedPreferencesManager.height)) {
if (rdo_cm!!.isChecked) {
txt_height!!.filters = arrayOf<InputFilter>(DigitsInputFilter(3, 0, 240.0))
txt_height!!.setText(SharedPreferencesManager.height.toString())
} else {
txt_height!!.filters =
arrayOf<InputFilter>(InputFilterRange(0.00, height_feet_elements))
txt_height!!.setText(SharedPreferencesManager.height.toString())
}
} else {
if (rdo_cm!!.isChecked) {
txt_height!!.filters = arrayOf<InputFilter>(DigitsInputFilter(3, 0, 240.0))
txt_height!!.setText("150")
} else {
txt_height!!.filters =
arrayOf<InputFilter>(InputFilterRange(0.00, height_feet_elements))
txt_height!!.setText("5.0")
}
}
}
object SharedPreferencesManager {
private val ctx: Context
get() = Application.instance
private fun createSharedPreferences(): SharedPreferences {
return ctx.getSharedPreferences(AppUtils.USERS_SHARED_PREF, Context.MODE_PRIVATE)
}
private val sharedPreferences by lazy { createSharedPreferences() }
var height: String
get() = sharedPreferences.getString(AppUtils.HEIGHT,"")!!
set(value) = sharedPreferences.edit().putString(AppUtils.HEIGHT, value).apply()
}
txt_height?SharedPreferencesManager? And in particular, what isSharedPreferencesManager.height?txt_height!!.setText(SharedPreferencesManager.height.toString())butheightdoesn't exist inSharedPreferencesManager, so this shouldn't be able to be compiled.