2013-04-09 28 views
8

Tôi chỉ muốn nắm bắt sự kiện khi người dùng nhấn enter trên editText.OnEditorActionListener không hoạt động

Tôi không nhận được thông báo Toast chứ không phải là "Enter pressed" chứ không phải là "Some pressed pressed!" hoặc.

Tôi đang làm gì sai?

myEditText.setOnEditorActionListener(new OnEditorActionListener() { 

    @Override 
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 

    Toast.makeText(getApplicationContext(), "Some key pressed!", Toast.LENGTH_LONG).show(); 

     if (event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) { 
      Toast.makeText(getApplicationContext(), "Enter pressed", Toast.LENGTH_LONG).show(); 
       return true; 
       } 
       return false; 
      } 
     }); 

E D I T:

Vâng nó là làm việc trên Android 2.3.3 và không làm việc trên 4.1.2 Bất kỳ ý tưởng làm thế nào tôi có thể làm cho công việc này trên bất kỳ thiết bị Android?

+0

bạn có thể sử dụng TextWatcher cho bất kỳ sự kiện nào liên quan đến Edittext –

Trả lời

1
myEditText.setOnEditorActionListener(new OnEditorActionListener() { 

public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) { 
    Toast.makeText(getApplicationContext(), "some key pressed", Toast.LENGTH_LONG) 
         .show(); 
    return false; 
} 
}); 

Mã này sẽ hiển thị cho tôi một số chìa khóa ép khi ép nhập key sau khi nhập cái gì đó trong EditText tôi. Nhưng tôi không có vấn đề gì trong mã của bạn.

25

Vui lòng thử đặt EditText ở chế độ một đường.

editText.setSingleLine(); 

hoặc trong file layout xml của bạn:

android:singleLine="true" 

CẬP NHẬT

android:singleLine="true" bị phản đối. Từ giờ trở đi, sử dụng android:maxLines="1" với android:inputType="text" để đạt được hành vi này

editText.setMaxLines(1); 
editText.setInputType(InputType.TYPE_CLASS_TEXT); 

cho việc thiết lập trình.

+2

Ngoài ra các kiểu nhập khác sẽ hoạt động (tôi nghĩ nếu chúng ngăn chặn ký tự dòng mới) chẳng hạn như "textPersonName" –

+0

@CameronKetcham: đó là sự thật. "InputType.TYPE_TEXT_VARIATION_PASSWORD" cũng sẽ hoạt động –

+0

thần bạn đã lưu ngày của mình! –

1

sử dụng android:imeOptions="actionGo" bằng xml. actionDone không còn phản hồi lại onEditorAction.

+0

Tác vụ được thực hiện trên nexus 6p, nougat 7.1 – murt

1

Vấn đề đối với tôi là tôi đã đặt trong XML android:inputType="textMultiline". Khi tôi xóa tùy chọn textMultiline, EditorListener bắt đầu hoạt động.