3 개의 EditText 요소가 있습니다. 입력에 4 문자가 있으면 한 필드에서 다음 필드로 이동하고 싶습니다.HTC 긴 프레스에서 TextWatcher로 문자 수를 계산할 수 없습니다.
나는 이것에 대한 TextWatcher를 사용
getEditView(R.id.edit_code1).addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override
public void afterTextChanged(Editable input) {
if(input.length() == 4){
getEditView(R.id.edit_code2).requestFocus();
}
}
});
글고의 inputType는 "textCapCharacters"입니다
4를 얻기 위해 R을 잡고 같은 숫자를 얻을 수있는 키에 길게 누르을 수행 할 때 , 대부분의 장치는 사용자가 버튼을 누르고있을 때까지 문자를 추가하지 않고 문자 4를 선택한 후 afterTextChanged를 발생시킵니다. HTC 키보드 (이 경우 2.3.5의 HTC Desire)에서는 그렇지 않습니다. 사용자가 여전히 버튼을 누르고있는 경우에도 R이 EditText에 추가되고 afterTextChanged가 실행되고 코드는 해당 작업을 수행하여 다음 필드에 포커스를 둡니다.
어떻게 이러한 원치 않는 동작을 방지 할 수 있습니까? onKeyDown/Up을 보는 것은 일반적인 키 입력을 등록하지 않기 때문에 도움이되지 않습니다.
그게 제가 두려워했던 것입니다. 고맙습니다. 선택의 여지가 있습니다. 언제나 HTC 키보드에서 longpress 대신 숫자 입력을 사용할 수 있습니다. – Jurriaanr