在使用addTextChangeListener和更新值时遇到问题?



我目前正在Kotlin学习android,我正在尝试创建一个提示计算器。我有两个EditText视图,一个用于账单金额,一个用于小费金额。我也有两个textview,一个用于提示金额,一个用于total + tip

这是我的代码的一部分,在那里我试图有EditText在用户输入时自动更新TextViews。

billInput.addTextChangedListener(object: TextWatcher) {
override fun afterTextChanged(s: Editable) {
totalAmt.text = billInput + tipInput
}
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {
}
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {

}
}

现在,我试图有账单+小费金额被添加和更新TextView。我得到了错误提示"期待一个类体"在第一行旁边。我使用addTextChangedListener不正确还是我的代码有问题?我知道可能有更有效的方法来做到这一点,但我假设我可以使用addTextChangedListener为两个EditText视图。所以,为了弄清楚:我想输入我的账单金额和小费金额,并自动更新"小费金额"。和"总:";.

编辑***:在onTextChanged下做数字计算(小费和总金额)有意义吗?这样,当接收到输入时,计算将被处理,而afterTextChanged负责显示最终结果。

您正在添加EditText + EditText,应该添加值而不是

billInput.addTextChangedListener(object: TextWatcher) {
override fun afterTextChanged(s: Editable) {
totalAmt.text = "${billInput.text.toString().toInt() + tipInput.text.toString().toInt()}"
}
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {
}
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {

}
}

你好,我的朋友,你可以为两个EditTexts设置addTextChangedListener,并为他们两个设置相同的代码,因为一个人不能同时输入两个EditTexts。执行如下代码:

bill Input Edittext

billInput!!.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(editable: Editable) {
//code after changed
val bill = editable.toString().toInt()
val tip = tipInput!!.text.toString().toInt()
total.text = ((bill + tip).toString())
}
override fun beforeTextChanged(charSequence: CharSequence, i: Int, i1: Int, i2: Int) {
//code before text change
}
override fun onTextChanged(charSequence: CharSequence, i: Int, i1: Int, i2: Int) {
//code during change
}
})

tip Input EditText

tipInput!!.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(editable: Editable) {
//code after changed
val bill = editable.toString().toInt()
val tip = billInput!!.text.toString().toInt()
total.text = ((bill + tip).toString())
}
override fun beforeTextChanged(charSequence: CharSequence, i: Int, i1: Int, i2: Int) {
//code before text change
}
override fun onTextChanged(charSequence: CharSequence, i: Int, i1: Int, i2: Int) {
//code during change
}
})

最新更新