1

У меня есть EditText, при вводе в него пробелов и Enter'ов, я должен их перехватывать. Но никак не пойму, как обозначается Enter? Пробовал перехватить его, как пробел — не помогает.

pavlofff
  • 36,765

1 Answers1

4

Enter - управляющий символ, его нельзя просто так перехватить - для этого есть специальная константа в KeyEvent:

editText.setOnKeyListener(new View.OnKeyListener()
{
    public boolean onKey(View v, int keyCode, KeyEvent event)
    {
        if(event.getAction() == KeyEvent.ACTION_DOWN && 
            (keyCode == KeyEvent.KEYCODE_ENTER))
            {
                // действие при перехвате Enter
            }
        return false;
    }
}
);
pavlofff
  • 36,765
  • А из SQLite таблицы в cursor он приходит в виде чего? Как он там "помечается"? Я смотрел в таблице, там он как пробел, но в cursor он как передается? –  Oct 29 '15 at 04:16
  • Код управляющего символа Enter в текстовой строке зависит от кодировки, обычно это код 13 ( аналогично управляющая последовательность /n ). В разных операционных системах могут быть разные управляющие символы перевода строки. При "просмотре" строки он не отображается , поэтому вы видите "пробел" – pavlofff Oct 29 '15 at 04:20
  • То есть, нужно посмотреть как он отмечается в SQLite базе данных, а потом в Cursor перехватить управляющий символ? –  Oct 29 '15 at 04:22
  • Я не знаю, что вы хотите делать, но судя по всему - да. – pavlofff Oct 29 '15 at 04:24
  • вот таблица управляющих кодов - разбирайтесь. Кстати, я ошибся, управляющая последовательность Enter не /n, а /r. – pavlofff Oct 29 '15 at 04:29
  • Спасибо, пойду разбираться :). –  Oct 29 '15 at 04:30