首页 > 解决方案 > 在使用 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 负责显示最终结果?

标签: androidkotlinandroid-edittext

解决方案


您正在添加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) {
         
        }

    }

推荐阅读