【问题标题】:afterTextChanged deleting issueafterTextChanged 删除问题
【发布时间】:2011-05-08 05:19:24
【问题描述】:

我尝试进行设置,以便当我在 EditText 字段中输入内容时,它会更改文本颜色并将变量设置为输入的数字的值。但是,当我从字段中删除字符时,它会触发关闭应用程序的错误。我想我可能需要找到一个不依赖于长度的 if 语句,或者可能使用其他一些方法(onTextChanged,beforeTextChanged ......我真的不知道如何正确使用其中任何一个)

    public void afterTextChanged(Editable arg0) {
    if(arg0.length()>0){
        ageTag.setTextColor(Color.GREEN);
        ageEntered=true;
        ageInYears=Integer.parseInt(enterAge.getText().toString()); 
    }
}

【问题讨论】:

    标签: android android-edittext textchanged


    【解决方案1】:
    1. 实现android.text.TextWatcher接口

    2. 绑定监听器:

    enterAge.addTextChangedListener(this);

    【讨论】:

    • 那在我的代码前面... EnterAge 是一个 EditText ,其中设置了侦听器。 ageTag 是一个 TextView,age Entered 是一个布尔标志,ageInYears 是一个从输入到 EnterAge 的数字字符串中解析出来的整数,因此 enterAge.addTextChangedListener(this);在顶部我有公共类计算器扩展......bla bla bla......再次实现TextWatcher {......我遇到的问题是事件处理程序在TextChanged之后做了一些事情,它正在尝试执行这些操作当我删除以清除字段时没有文本。
    【解决方案2】:

    我遇到了类似的问题。我必须在第 5 个字符,第 11 个等之后附加“-”。当我想删除“-”时,它忽略了删除键,所以我所做的如下。

    创建了两个变量:beforeCharCounter 和 charCounter,在 onTextChanged 中我将它们的值设置为 before 和 count。

    activationKeyEditText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    
            }
    
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                beforeCharCounter = before;
                charCounter = count;
                System.out.println(count);
            }
    
            @Override
            public void afterTextChanged(Editable s) {
                if ((s.length() == 5 && beforeCharCounter <= 5 && charCounter == 5) ||
                        (s.length() == 11 && beforeCharCounter <= 11 && charCounter == 11)
                        || (s.length() == 17 && beforeCharCounter <= 17 && charCounter == 17)) {
                    s.append('-');
                }
            }
        });
    

    如果之前的值大于长度,那么确定它是删除的,这将解决删除问题。当用户输入 10 个字符并按下第 5 个字符时使用计数。如果我们不保留确切的计数,破折号将疯狂地附加在末尾。

    希望这能帮助您解决问题。

    【讨论】:

      猜你喜欢
      • 2015-03-26
      • 2011-09-05
      • 2011-12-24
      • 1970-01-01
      • 2012-06-19
      • 2016-01-02
      • 2014-10-21
      • 2011-06-17
      • 2020-11-12
      相关资源
      最近更新 更多