Chỉ trên một điện thoại tôi đang thử nghiệm trên (HTC Incredible, Android 2.2, Phần mềm 3.21.605.1), tôi đang gặp phải hành vi sau đây.OnEditorActionListener được gọi hai lần với cùng một eventTime trên bàn phím SenseUI
Trình xử lý sự kiện onEditorAction đang được gọi hai lần (ngay) khi nhấn phím Enter trên bàn phím giao diện người dùng Sense.
Các KeyEvent.getEventTime() là như nhau cho cả hai lần sự kiện này được gọi, dẫn tôi đến công việc xung quanh này:
protected void onCreate(Bundle savedInstanceState) {
[...]
EditText text = (EditText)findViewById(R.id.txtBox);
text.setOnEditorActionListener(new OnEditorActionListener() {
private long lastCalled = -1;
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (event.getEventTime() == lastCalled) {
return false;
} else {
lastCalled = event.getEventTime();
handleNextButton(v);
return true;
}
}
});
[...]
}
Các EditText được định nghĩa là:
<EditText
android:layout_width="150sp"
android:layout_height="wrap_content"
android:id="@+id/txtBox"
android:imeOptions="actionNext"
android:capitalize="characters"
android:singleLine="true"
android:inputType="textVisiblePassword|textCapCharacters|textNoSuggestions"
android:autoText="false"
android:editable="true"
android:maxLength="6"
/>
On tất cả các thiết bị khác mà tôi đã thử nghiệm trên, nút hành động được gắn nhãn đúng "Tiếp theo" và sự kiện này chỉ được gọi là một lần duy nhất khi nút đó được nhấn.
Đây có phải là lỗi trong bàn phím của UI UI hay tôi đang làm điều gì đó không chính xác?
Cảm ơn bạn đã hỗ trợ.
Đã cập nhật - nhờ câu trả lời nhất định, tôi đã thanh toán sau đây làm séc của mình. Này hoạt động tốt trên cả hai điện thoại tôi đã sẵn sàng để thử nghiệm (Sense UI và CyanogenMod CM7)
if (event != null && event.getAction() != KeyEvent.ACTION_DOWN) {
return false;
}
if (actionId != EditorInfo.IME_ACTION_NEXT && actionId != EditorInfo.IME_NULL) {
return false;
}
Không có câu trả lời cho bạn Tôi sợ, tôi chỉ muốn nói rằng tôi đã bị ảnh hưởng bởi vấn đề này ngày hôm nay. Tôi chưa bao giờ thấy bàn phím HTC Sense trước ngày hôm nay .. ugh!Và làm thế nào họ đã bỏ đi bằng cách bỏ qua cờ textNoSuggestions? Làm cho giao diện người dùng của tôi một chút sucky, thối chúng. –
Tôi nhận thấy rằng rất nhiều ứng dụng không hoạt động tốt vì bàn phím của chúng không thực hiện nút mặc định (luôn là "Enter"). Điều này bao gồm các ứng dụng do Google cung cấp (bao gồm, tôi nghĩ rằng, quy trình đăng ký ban đầu). Nó có vẻ giống như một điều khá lớn cho HTC để bỏ qua. Đó là một sự xấu hổ, bởi vì tôi thực sự thích SenseUI hơn tất cả hơn Motoblur. Cảm ơn bạn đã xác nhận. – mbafford