EditText не показывает текущий ввод (Android 4)

Мое приложение для 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());

5
задан ottel142 24 April 2013 в 10:30
поделиться