Странное поведение программной клавиатуры в ListView с EditTexts - PullRequest
0 голосов
/ 30 января 2012

У меня есть ListView, заполненный EditTexts. Они не фокусируются при запуске, но пользователь может войти в «режим редактирования» после длительного щелчка по элементу ListView - соответствующему ListView. Первая странная вещь - когда случается самый первый длинный щелчок. EditText получает фокус, но клавиатура не появляется. EditText нужно нажать, чтобы он наконец появился. Когда после этого долго нажимается другой элемент списка, появляется клавиатура. Единственное различие во внутреннем поведении, которое мне удалось наблюдать, заключается в том, что в первом случае событие onClick не запускается для EditText, а во втором случае -.

Но самое неприятное случается, когда я редактирую пару элементов, прокручиваю здесь и там, редактирую еще пару, и вдруг я оказываюсь в сфокусированном EditText без показанной клавиатуры и без какого-либо способа поднять клавиатуру снова. что EditText, постукивание не помогает. Я стараюсь быть очень осторожным в своем приложении и сохраняю состояние EditText и воссоздаю его в своем адаптере ListView в методе getView.

Есть предложения, как отладить этот материал? Возможно, кто-то может объяснить, как клавиатура решает появиться, и как отладить это событие, если это возможно.

1 Ответ

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

Я нашел действительно хорошее объяснение того, что происходит с вызовами requestFocus () здесь: Вкладки Android Actionbar и клавиатура Focus В двух словах: когда вы вызываете requestFocus () (или он вызывается из-за настройки xml в макете), когда все дерево представления еще не выложено, ваше представление будет думать, что оно имеет фокус, но на самом деле это может и не быть. Одним из решений будет вызов post (Runnable) для вашего представления или его родитель для запроса фокуса после завершения макета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...