如何解决1 个 EditText 的 2 个 TextWatcher
我正在为自己开发一个简单的 Android 应用项目。我找到了一篇让我决定使用 TextWatcher 的文章。很简单,我将 TextWatcher 添加到我的代码中。但事情是这样的。我设计了 2 个 RadioButtons 和 1 个 EditText。两个 RadioButton 都将决定我的唯一一个 EditText 的格式。
以下是我希望复制应用的方式:
-
如果用户按下按钮 A,则 Edittext 的输入格式将如下所示:
ABCD 1234 EFGH 5678
所以,它每 4 个字符有一个空格
-
如果用户按下按钮 B,则 EditText 的输入格式将如下所示:
ABCD1234EFGH5678
因此,每 4 个字符中没有空格
即使用户再次按下反义词,EditText的格式也会遵循条件
这是我尝试过的:
使用 if-else 条件,甚至创建 2 个 TextWatcher,但流程仍然是这样的:
制作 2 个 TextWatchers 来确定案例,但仍然是我所拥有的:
- 用户按下按钮 B,Edittext 格式将类似于
ABCD1234EFGH5678
- 然后,用户按下按钮 A,Edittext 格式将类似于
ABCD 1234 EFGH 5678
- 当用户再次按下按钮 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 举报,一经查实,本站将立刻删除。