Tôi gặp sự cố với hành vi của trình giả lập Jelly Bean mới nhất. Tôi có một số EditTexts
trong ứng dụng của mình. An OnEditorActionListener
cung cấp xử lý đặc biệt khi người dùng nhấn phím ENTER trên bàn phím. Điều này làm việc cho đến khi ICS, nhưng bây giờ trên Jelly Bean phương pháp gọi lại người nghe onEditorAction()
không còn được gọi. Chỉ một dòng mới được chèn vào EditText
.onEditorAction() không được gọi sau khi phím Enter đã được nhấn vào trình giả lập Jelly Bean
Điều này có thể được sao chép theo cách này:
EditText testEditText = new EditText(context);
testEditText.setOnEditorActionListener(new OnEditorActionListener() {
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
Log.d(TAG, "onEditorAction() called");
return false;
}
});
addView(testEditText);
Đây có phải là một lỗi trong Jelly Bean? Hoặc trong giả lập? Hay hành vi đã được thay đổi cố ý?
Tò mò người khác viết rằng phương pháp này được gọi là, nhưng với các thông số bất ngờ, trên Nexus 7 chạy Jelly Bean ở đây: null keyevent and actionid = 0 in onEditorAction() (Jelly Bean/Nexus 7)
dự án mẫu này hoạt động như mong đợi: https://github.com/commonsguy/cw-omnibus/tree/master/ActionBar/ActionBarDemo – CommonsWare
@CommonsWare: Cảm ơn bạn, tôi tìm thấy một cách giải quyết cho tôi vấn đề trong mã của bạn. Nếu tôi làm như sau, phím ENTER được trao đổi với phím GO trên bàn phím ảo, kích hoạt trênEditorAction(): editText.setRawInputType (InputType.TYPE_CLASS_TEXT); editText.setImeOptions (EditorInfo.IME_ACTION_GO); – Hendrik
Hoặc trong XML: android: imeOptions = "actionGo" \t \t android: inputType = "text" – Hendrik