Пользовательский EditText для Android и переопределение кнопки «Назад»

Я хочу переопределить кнопку «Назад», когда отображается программная клавиатура. В основном, когда нажата кнопка «Назад», я хочу, чтобы клавиатура закрывалась, и я хочу добавить некоторый текст ко всему, что пользователь набрал в этом текстовом поле редактирования. Так что в основном мне нужно знать, когда клавиатура уволена. После поиска я понял, что для этого нет 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, чтобы проверить его работу, но когда я нажимаю кнопку «Назад», оно печатается дважды, по какой причине это будет делаться?

Любая помощь приветствуется!!

5
задан AdamM 15 August 2012 в 08:10
поделиться