【发布时间】:2021-07-14 20:55:57
【问题描述】:
我有两个 editext 和一个 textview...textview 值来自 api 并且基于值我必须估计剩余值...
来自 api 的 textview 值是 tv_UOM_value
第一个edittext id是tv_UOM_0
第二个edittext id是tv_UOM_value_0
我必须处理的两种情况:--
1)当我在tv_UOM_0中输入值时,它应该添加tv_UOM_0 + tv_UOM_value并显示在tv_UOM_value_0中
2)当我在tv_UOM_value_0 中输入值时,它应该减去tv_UOM_value_0 - tv_UOM_value 并显示在tv_UOM_0 中
以下是我的代码:-
tv_UOM_0.addTextChangedListener(object:TextWatcher{
@SuppressLint("SetTextI18n")
override fun afterTextChanged(p0: Editable?) {
if(p0?.isNotEmpty() == true){
tv_UOM_value_0.setText(
"${tv_UOM_value.text.toString()
.toInt() + tv_UOM_0.text.toString().toInt()}"
)
}else{
tv_UOM_value_0.setText("")
}
}
override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
}
override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
}
})
tv_UOM_value_0.addTextChangedListener(object:TextWatcher{
@SuppressLint("SetTextI18n")
override fun afterTextChanged(p0: Editable?) {
if (p0?.isNotEmpty() == true) {
tv_UOM_0.setText(
"${tv_UOM_value_0.text.toString()
.toInt() - tv_UOM_value.text.toString().toInt()}"
)
}
else{
tv_UOM_0.setText("")
}
}
override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
}
override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
}
})
上面的代码输出:当我在第一个编辑文本中输入值时,设备挂起
需要帮助提前谢谢...
【问题讨论】:
-
您有一个无限循环,其中更改一个文本字段会在 2 日触发回调,这反过来又会在 1 日触发回调并重复循环。你必须打破链条。
-
我应该怎么做@Francesc?
标签: android android-layout kotlin android-edittext addtextchangedlistener