Tôi có 3 thành phần EditText và tôi muốn chuyển từ trường này sang trường khác nếu có 4 ký tự trong đầu vào.Đếm ký tự với TextWatcher không thành công trên HTC longpress
tôi sử dụng một TextWatcher cho việc này:
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();
}
}
});
Các inputType cho EditText là "textCapCharacters"
Khi làm một nhấn và giữ trên một chìa khóa để có được một số, như đang nắm giữ R để có được một 4 , hầu hết các thiết bị sẽ không thêm chữ cái, cho đến khi người dùng ngừng giữ nút và sẽ kích hoạt afterTextChanged sau khi chọn chữ cái 4. Trên bàn phím HTC (Trong trường hợp này HTC Desire trên 2.3.5) đây không phải là trường hợp. Mặc dù người dùng vẫn đang giữ nút, R được thêm vào EditText và afterTextChanged được kích hoạt, và mã thực hiện công việc của nó và đặt trọng tâm vào trường tiếp theo.
Làm cách nào để ngăn chặn hành vi không mong muốn này? Xem onKeyDown/Up sẽ không hữu ích, bởi vì nó không đăng ký tổ hợp phím thông thường.
Đó là điều tôi sợ, cảm ơn bạn, tôi sẽ rời khỏi lựa chọn cho khách hàng. Nó luôn luôn có thể trên bàn phím HTC để sử dụng đầu vào số thay vì một longpress anyway. – Jurriaanr