Как отлавливать ключевые события, когда софт-клавиатура открыта на андроид? - PullRequest
0 голосов
/ 30 июля 2011

Я знаю, как отлавливать ключевые события в моей деятельности, переопределяя

public boolean onKeyDown(int keyCode, KeyEvent event)

Проблема в том, что когда программная клавиатура открыта, этот метод даже не вызывается ... каким-либо образом перехватить событие?

1 Ответ

0 голосов
/ 09 сентября 2011

Да, когда мы говорим о программируемой клавиатуре, это означает, что ее не так просто использовать. Кстати, методы, которые относятся к программируемой клавиатуре, не дают ожидаемого результата. Например:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) 
{
    //do something
    return super.onKeyDown(keyCode, event);
}

Обходной путь, который я нашел, - это использование TextWatcher. Используйте этот код для вашего приложения

YourEdit = (EditText) findViewById(R.id.YourEdit);         
YourEdit.addTextChangedListener(new TextWatcher()
{
        public void  afterTextChanged (Editable s)
        { 
            //checking of TextWatcher functionality
            Toast.makeText(mContext, "afterTextChanged", 3).show();    
            //do something
        } 

        public void  beforeTextChanged  (CharSequence s, int start, int count, int after)
        { 
            //checking of TextWatcher functionality
            Toast.makeText(mContext, "beforeTextChanged", 3).show();    
            //do something
        } 

        public void  onTextChanged  (CharSequence s, int start, int before, int count) 
        { 
            //checking of TextWatcher functionality
            Toast.makeText(mContext, "onTextChanged", 3).show();    
            //do something
        }
});

Эти методы вызываются последовательно: beforeTextChanged, onTextChanged и afterTextChanged. Вы можете поймать любой этап изменения текста. Удачи!

...