我有3个EditTexts,每个都可以包含一个char,一旦用户输入了char,我们就转到下一个editText。除非您尝试快速键入文本然后第一次编辑正确填充并且光标移动到下一个编辑但下一个键入的字符将丢失,则逻辑工作正常。我不知道为什么会这样,或者我如何解决这个问题,欢迎任何建议。
代码:
TextWatcher类:
@Override
public void afterTextChanged(Editable editable) {
if(editable.length() == LEFT_EDITOR_MAX_LENGTH && Character.isLetter(editable.charAt(LEFT_EDITOR_MAX_LENGTH - 1))){
fragment.goToNextView();
} else if(editable.length() > LEFT_EDITOR_MAX_LENGTH - 1){
//if (editable.length() > LEFT_EDITOR_MAX_LENGTH + 1) {
fragment.removeInvalidChar();
}
}
DialogFragment片段(正常而非兼容性片段)
.....
protected void goToNextView() {
if (edi1.hasFocus()) {
edi1.removeTextChangedListener(watcher1);
edi2.requestFocus();
} else if (edi2.hasFocus()) {
edi2.removeTextChangedListener(watcher2);
edi3.requestFocus();
} else if (edi3.hasFocus()) {
edi3.removeTextChangedListener(watcher3);
sendPassphrase();
}
}
protected EditText getFocusedEditText() {
if (edi1.hasFocus()) {
return edi1;
} else if (edi2.hasFocus()) {
return edi2;
} else {
return edi3;
}
}
void removeInvalidChar() {
EditText focusedEditText = getFocusedEditText();
updateEmptyTextField(focusedEditText, "");
}
private void updateEmptyTextField(EditText editText, String emptyString) {
editText.setText(emptyString);
editText.setSelection(editText.getText().length());
}
感谢