微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

1 个 EditText 的 2 个 TextWatcher

如何解决1 个 EditText 的 2 个 TextWatcher

我正在为自己开发一个简单的 Android 应用项目。我找到了一篇让我决定使用 TextWatcher 的文章。很简单,我将 TextWatcher 添加到我的代码中。但事情是这样的。我设计了 2 个 RadioButtons 和 1 个 EditText。两个 RadioButton 都将决定我的唯一一个 EditText 的格式。

以下是我希望复制应用的方式:

  1. 如果用户按下按钮 A,则 Edittext 的输入格式将如下所示:

    ABCD 1234 EFGH 5678

    所以,它每 4 个字符有一个空格

  2. 如果用户按下按钮 B,则 EditText 的输入格式将如下所示:

    ABCD1234EFGH5678

    因此,每 4 个字符中没有空格

即使用户再次按下反义词,EditText的格式也会遵循条件

这是我尝试过的:

使用 if-else 条件,甚至创建 2 个 TextWatcher,但流程仍然是这样的:

制作 2 个 TextWatchers 来确定案例,但仍然是我所拥有的:

  1. 用户按下按钮 B,Edittext 格式将类似于 ABCD1234EFGH5678
  2. 然后,用户按下按钮 A,Edittext 格式将类似于 ABCD 1234 EFGH 5678
  3. 用户再次按下按钮 B 时,Edittext 格式将类似于 ABCD 1234 EFGH 5678 而不是 ABCD1234EFGH5678

我该怎么做才能达到这种方法

这是我的 MainViewGenerator.java:

this.editTextNumberSpaceTextWatcher = new EditTextNumberSpaceTextWatcher() {
    @Override
    public void onTextChanged(CharSequence s,int start,int before,int count) {
        super.onTextChanged(s,start,before,count);
        editTextString = s.toString();
    }
};

this.editTextNumbernormalTextWatcher = new EditTextNumbernormalTextWatcher() {
    @Override
    public void onTextChanged(CharSequence s,count);
        editTextString = s.toString().replaceAll(" ","");
    }
};


withId(R.id.my_main_editText,new Anvil.Renderable() {
    @Override
    public void view() {
        if (!btnRadioGroupValue.isEmpty()){
            if (btnRadioGroupValue.equals(valueButtonA)){
                onTextChanged(EditTextNumberSpaceTextWatcher);
                text(editTextString);
            } else if (btnRadioGroupValue.equals(valueButtonB)){
                onTextChanged(EditTextNumbernormalTextWatcher);
                text(editTextString);
            }
        }
    }
});

这是我的 EditTextNumberSpaceTextWatcher.java:

public abstract class EditTextNumberSpaceTextWatcher extends PhoneTextWatcher {
    private static final String MY_NUMBER_FORMAT = "**** **** **** **** **** **** **** ****";

    public EditTextNumberSpaceTextWatcher() {
        super(MY_NUMBER_FORMAT );
    }

    @Override
    public char[] getSeparatorCharacters() {
        return new char[]{' '};
    }
}

这是我的 EditTextNumbernormalTextWatcher.java:

public abstract class EditTextNumbernormalTextWatcherextends PhoneticTextWatcher {
    private static final String MY_NUMBER_FORMAT = "********************************";

    public EditTextNumbernormalTextWatcher() {
        super(MY_NUMBER_FORMAT );
    }
}

解决方法

我认为您只能使用一个 TextWatcher:

@Override
public void onTextChanged(CharSequence s,int start,int before,int count) {
//here evaluate the value of radio button
 if(mRadioButton1.isChecked()){
      //set pattern
   }else if(mRadioBUtton2.isChecked()){
     //set another pattern
   }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。