android: Softkeyboard выполняет действие при нажатии клавиши Done
У меня есть EditText. Я хочу, чтобы после ввода текста, когда пользователь нажимает клавишу Done softkeybard, он должен выполнить некоторую операцию поиска, которую я также реализовал в событии нажатия кнопки. Как это сделать...???
4 ответа:
попробуй такое
editText.setOnEditorActionListener(new OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if(actionId==EditorInfo.IME_ACTION_DONE){ //do something } return false; } });
попробуй такое
это работает как для сделал и возвращение.
EditText editText= (EditText) findViewById(R.id.editText); editText.setOnEditorActionListener(new EditText.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER || actionId == EditorInfo.IME_ACTION_DONE) { // Do your action return true; } return false; } });
вы улавливаете
KeyEvent
а затем проверьте его код ключа.FLAG_EDITOR_ACTION
используется для идентификации ключей ввода, поступающих из IME, ключ ввода которого был автоматически помечен "далее"или " готово"if (event.getKeyCode() == KeyEvent.FLAG_EDITOR_ACTION) //your code here
найти документы здесь.
Второй Способ
myEditText.setOnEditorActionListener(new OnEditorActionListener() { @Override public boolean onEditorAction(TextView view, int actionId, KeyEvent event) { int result = actionId & EditorInfo.IME_MASK_ACTION; switch(result) { case EditorInfo.IME_ACTION_DONE: // done stuff break; case EditorInfo.IME_ACTION_NEXT: // next stuff break; } } });
попробуй такое
Это будет работать в обоих условиях, показывает ли ваша клавиатура знак ввода или следующий знак стрелки
YourEdittextName.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if(actionId== EditorInfo.IME_ACTION_DONE||actionId==EditorInfo.IME_ACTION_NEXT) { //Perform Action here } return false; } });
Если вы стоите перед красной линией, то сделайте это... импортируйте Keyevent и EditorInfo, нажав alt+enter тогда все ошибки удалить его будет правильно.......