Мое приложение для Android содержит представление EditText , в котором вы можете ввести несколько коротких сообщений (одна строка). Нажатие клавиши DONE на клавиатуре добавит сообщение к просмотру журнала выше ( TextView ) и очистит окно ввода.
Вот фрагмент из моего представления xml:
Для обработки ввода и сброса представления я использую OnEditorActionListener .
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
...
String input = mInputView.getText().toString();
mInputView.setText(""); // clear the input view
...
}
У меня не было проблем с Android 1.6 - 3. Но начиная с IceCreamSandwich (> = Android 4) возникает странная ошибка, которая периодически возникает (в большинстве случаев после ~ 10-30 вводов).
Когда вы вводите текст, поле ввода остается пустым. Курсор по-прежнему мигает в позиции 0, текст не отображается. Хотя щелчок по DONE добавляет (невидимый) текст в представление журнала выше, и этот текст можно прочитать. Кроме того, при сокрытии клавиатуры текст в представлении EditText становится видимым.
Как указано в принятом ответе, это (не очень) известная ошибка ОС Android. Простое решение - очистить представление EditText другим способом:
TextKeyListener.clear(mInputView.getText());