android: Softkeyboard виконує дію, коли натискається клавіша Done


78

У мене є EditText. Я хочу, щоб після введення тексту, коли користувач натискає Doneклавішу програмної клавіатури, він безпосередньо виконував якусь операцію пошуку, яку я також реалізував під час натискання кнопки.


1
Кращий спосіб з Котлін в цьому коментарі: stackoverflow.com/a/48810268/1912924
Франческо Donzello

Відповіді:


205

Спробуйте це

editText.setOnEditorActionListener(new OnEditorActionListener() {        
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if(actionId==EditorInfo.IME_ACTION_DONE){
            //do something
        }
    return false;
    }
});

20

Спробуйте це

Це працює як для ЗВЕРНЕНОГО, так і для ПОВЕРНЕННЯ .

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;
                }
            });

0

Ви ловите, 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;
    }
 }
});

0

Спробуйте це

Це буде працювати в обох умовах, незалежно від того, чи на клавіатурі відображається знак введення або наступний знак стрілки

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, тоді всі помилки видалять його належним чином .......

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.