setText на EditText с помощью EventKey - PullRequest
1 голос
/ 24 февраля 2012

Я пытаюсь разработать виджет с EditText (допускается только int) и KeyEvent. Проблема в том, что при нажатии «0» он обнаруживает KeyEvent, но не записывает «0» в мой EditText. Следует добавить цифры, чтобы я нажимал на них.

et1.setOnKeyListener(new OnKeyListener() {
    @Override 
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        if (KeyEvent.ACTION_UP != event.getAction()) {
            switch (keyCode) {
                case KeyEvent.KEYCODE_0:
                    //Do something...
                    break;
                default: 
                    return false;
            }
        }
        return true;
    } 
});

Я пытался сделать что-то подобное, но это не так эффективно.

et1.setText(et1.getText().toString + "0");

Знаете ли вы какое-то решение?

1 Ответ

1 голос
/ 24 февраля 2012

Позвольте мне попытаться прояснить ситуацию. Пеп:

1) Если вы пытаетесь достичь EditText, который допускает только целочисленный (числовой) ввод, выМожно добавить атрибут и все.Вам не нужен пользовательский элемент управления для этого поведения.

 android:inputType="number" 

2) Причина, по которой вы не получаете никакого ввода в ваш EditText, заключается просто в том, что вы блокируете его, возвращая true в переопределенном onKey метод.

ref говорит, что onKey должен возвращать:

Истина, если слушатель использовал событие, ложь в противном случае.

Это означает, что если вы возвращаете true, вы отвечаете, Android не будет ничего вводить в вашем EditText.Поскольку вы сами этого не делаете (по крайней мере, в предоставленном вами коде), EditText не заполняется.

Итак, я предлагаю вам полностью удалить обработчик и добавить атрибут inputType в xmlкак ты делал раньше


Обновление

Если вам нужно обновить EditText (назовем его EditText1 ) на основе ввода в другом ( EditText2 ), я предлагаю отслеживать вход в первом с помощью TextWatcher и установить text EditText2 с обработанным значением.

Проверить эта похожая проблема для примера кода.

...