2

我尝试进行设置,以便当我在 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()); 
    }
}
4

2 回答 2

3
  1. 实现android.text.TextWatcher接口

  2. 绑定监听器:

enterAge.addTextChangedListener(this);

于 2011-05-08T05:24:59.470 回答
-1

我有一个类似的问题。我必须在第 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 个字符时使用计数。如果我们不保留确切的计数破折号将疯狂地附加在末尾。

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

于 2018-07-24T14:49:47.513 回答