android - 如何在android中输入编辑文本时更新 TextView

标签 android android-edittext

我在底部有多个 edittext 和一个 textview 以获得 edittexts 中所写内容的总和,但我没有没成功我尝试了 TextWatcher,但它不起作用,例如,我在第一个中写了 5,在第二个中写了 10,结果我得到了 16,因为它计数为 5+1+10。我还尝试了 onfocus 方法,但最后一个 edittext 的问题仍然存在,它不会更新结果。我真的不知道该怎么办。以前有人遇到过这个问题吗? TextWatcher 实现:

TextWatcher inputTextWatcher1 = new TextWatcher() {
             public void afterTextChanged(Editable s) {
                number = Integer.parseInt(s.toString());
                sum+=number;
                tv.setText("sum is "+sum);

}

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onTextChanged(final CharSequence s, int start, int before,
                    int count) {

            }

        };

最佳答案

使用以下代码。我已经对其进行了测试并像魅力一样工作..

et1.addTextChangedListener(new TextWatcher() {
    @Override
    public void onTextChanged(CharSequence s, int start, int before,
            int count) {

    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {
        if (s.length() > 0) {
            int number = Integer.parseInt(s.toString());
            ans -= number;
        }
    }

    @Override
    public void afterTextChanged(Editable s) {
        int number = Integer.parseInt(s.toString());
        ans += number;
        txtOutput.setText("sum is " + ans);
    }
});

et2.addTextChangedListener(new TextWatcher() {
    @Override
    public void onTextChanged(CharSequence s, int start, int before,
            int count) {

    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {
        if (s.length() > 0) {
            int number = Integer.parseInt(s.toString());
            ans -= number;
        }
    }

    @Override
    public void afterTextChanged(Editable s) {
        int number = Integer.parseInt(s.toString());
        ans += number;
        txtOutput.setText("sum is " + ans);
    }
});

这里,ans在使用前必须为0et1et2EditText

逻辑

beforeTextChanged 将在应用任何文本更改之前调用。就像你输入 5,然后它返回 "" 因为没有数据,然后如果你输入 2,它返回 5 因为它是之前输入的。所以这就是诀窍。

在添加任何值之前,只需从前一个值中减去它。否则你的逻辑是正确的。但每次你在回答中添加数字。这使您的答案错误。

好处

现在,如果您使用此逻辑,那么那里有多少 EditText 都没有关系。这将提供真实的答案。您只需将 TextWatcher 添加到每个 EditText。

关于android - 如何在android中输入编辑文本时更新 TextView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18721231/

相关文章:

android - 是否可以使用 Robolectric 测试抽象 Activity

android - 禁用 EditText 但接收触摸/点击事件

android - 尝试将字符串从 Android 模拟器发送到网络服务

android - 真实设备产生过多日志

android - 使用 Vision API 自定义 RectangleDetector

android - 在 Edittext android 的焦点上显示帮助消息

EditText 中的 Android 标签或气泡

隐藏的Android EditText

Play商店预发布报告中的Android应用程序崩溃但在真实设备中工作

android - 如何将这种格式的 SQL 时间戳 "1394039043000"转换为字符串