在我的应用中,用户必须使用以下格式在EditText
字段中输入电话号码:
我不希望用户在输入数字时键入“(”,“)”或“-”;我希望这些字符自动添加。
例如,假设用户键入了1
-应该自动添加“1”之后的括号,以便显示“1(”。我希望在删除时具有类似的功能。
我试图在afterTextChanged
接口(interface)的onTextWatcher
方法中设置文本,但是它不起作用;相反,它会导致错误。任何帮助将不胜感激。
最佳答案
您可能会遇到问题,因为afterTextChanged
是可重入的,即,对文本所做的更改导致再次调用该方法。
如果那是问题,一种解决方法是保留实例变量标志:
public class MyTextWatcher implements TextWatcher {
private boolean isInAfterTextChanged;
public synchronized void afterTextChanged(Editable text) {
if (!isInAfterTextChanged) {
isInAfterTextChanged = true;
// TODO format code goes here
isInAfterTextChanged = false;
}
}
}
作为替代方案,您可以只使用PhoneNumberFormattingTextWatcher -它不执行您描述的格式,但是再次使用时不必做太多事情。