Я хочу переопределить кнопку «Назад», когда отображается программная клавиатура. В основном, когда нажата кнопка «Назад», я хочу, чтобы клавиатура закрывалась, и я хочу добавить некоторый текст ко всему, что пользователь набрал в этом текстовом поле редактирования. Так что в основном мне нужно знать, когда клавиатура уволена. После поиска я понял, что для этого нет API, и что единственный реальный способ сделать это - создать свой класс EditText.
Поэтому я создал свой собственный класс EditText и расширил EditText следующим образом
public class CustomEditText extends EditText
{
public CustomEditText(Context context)
{
super(context);
init();
}
public CustomEditText(Context context, AttributeSet attrs)
{
super(context, attrs);
init();
}
public CustomEditText(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
init();
}
private void init()
{
}
}
Я также добавил этот метод
@Override
public boolean dispatchKeyEventPreIme(KeyEvent event)
{
if (KeyEvent.KEYCODE_BACK == event.getKeyCode())
{
Log.v("", "Back Pressed");
//Want to call this method which will append text
//init();
}
return super.dispatchKeyEventPreIme(event);
}
Теперь этот метод переопределяет кнопку «Назад», он закрывает клавиатуру, но я не знаю, как передать текст в поле EditText. Кто-нибудь знает, как бы я это сделал?
Также еще один быстрый вопрос: кто-нибудь знает, почему этот метод вызывается дважды? Как вы можете видеть, я добавил быстрое сообщение logcat, чтобы проверить его работу, но когда я нажимаю кнопку «Назад», оно печатается дважды, по какой причине это будет делаться?
Любая помощь приветствуется!!