Я работаю над приложением для Android, и у меня есть представление с 3 EditTexts. Я пытаюсь добиться того, чтобы при нажатии цифровой клавиши в последней из них вызывалось событие okKey для этого действия. Проблема в том, что для EditText, для которого я установил onKeyListener, ни методы getText, ни setText не работают. Позвольте мне объяснить:
Предположим, я инициализирую пустую строку
String string1 = "";
В моем методе onCreate я установил onKeyListener для одного из EditTexts
@Override
public void onCreate(Bundle savedInstanceState) {
...
findViewById(R.id.EditText3).setOnKeyListener(this);
...
}
Теперь, если я напишу следующий код в переопределенном методе okKey
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode >= KeyEvent.KEYCODE_0 && keyCode <= KeyEvent.KEYCODE_9) {
string1 += ((EditText) findViewById(R.id.EditText1)).getText();
string1 += ((EditText) findViewById(R.id.EditText2)).getText();
string1 += ((EditText) findViewById(R.id.EditText3)).getText();
((EditText) findViewById(R.id.EditText1)).setText("");
((EditText) findViewById(R.id.EditText2)).setText("");
((EditText) findViewById(R.id.EditText3)).setText("");
}
return false;
}
Только EditText1 и EditText2 очищаются, и текст в EditText3 не соединяется со строкой1. Если я заменю условие оператора If на
if (keyCode == KeyEvent.KEYCODE_ENTER)
затем при нажатии клавиши Enter (устанавливается как Далее) все работает как положено. Я также попытался добавить setText ("") в метод onResume действия, но без разницы в результате. Я ценю время, которое вы потратили, чтобы прочитать мой вопрос!
Отредактировано: добавлено «return false;» в конце метода onKey, я имел это в своей работе, но пропустил вопрос в этом вопросе, напомнил ответ Криса.