У меня есть EditText. Я хочу, чтобы после ввода некоторого текста, когда пользователь нажимал клавишу " Done
на программной клавиатуре, он непосредственно выполнял некоторые операции поиска, которые я также реализовал в событии нажатия кнопки.
Android: Softkeyboard выполняет действие при нажатии кнопки Done
Ответ 1
Попробуйте это
editText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if(actionId==EditorInfo.IME_ACTION_DONE){
//do something
}
return false;
}
});
Ответ 2
Попробуйте это
Он работает как для DONE, так и RETURN.
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;
}
});
Ответ 3
Вы ловите 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;
}
}
});
Ответ 4
Попробуйте
Это будет работать в обоих условиях: показывает ли ваша клавиатура знак входа или следующий знак стрелки
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;
}
});
если u r обращается к красной строке, тогда сделайте это... импортируйте Keyevent и EditorInfo, нажав alt + enter то все ошибки удалят его правильно........