#android-edittext #android-viewpager2 #lost-focus
#android-edittext #android-viewpager2 #потерянный фокус
Вопрос:
У меня есть ViewPager2 в моем приложении для Android. Одна из страниц содержит поле EditText.
Сценарий, с которым я столкнулся, выглядит следующим образом:
- Установите фокус на текстовое поле -> отображение клавиатуры
- Переключитесь на другую страницу -> клавиатура отключается (поле потеряло фокус)
- Вернитесь к предыдущей вкладке и снова установите фокус на текстовом поле -> поле получит фокус, но фокус сразу же исчезнет. Повторное нажатие на поле вернет фокус.
Я подготовил небольшое демонстрационное приложение, чтобы продемонстрировать эту проблему: https://github.com/hilaza/SwitchTabsBugDemo
Я отладил его, и я обнаружил, что ViewPager удаляет фокус с моей страницы, думая, что страница была выбрана. Отлаживая его дальше, я увидел, что это как-то связано с методом RecyclerView didChildRangeChange, который ошибочно предполагает, что что-то изменилось.
Кто-нибудь случайно знает, почему это происходит, и что я могу сделать, чтобы обойти это?
Комментарии:
1. вам удалось найти решение проблемы? Столкнувшись с той же проблемой
Ответ №1:
Это странная ошибка, возникающая из-за поведения ресайклера. К сожалению, не могу объяснить, почему это происходит, но точно знаю, что эта строка может вам помочь:
pager.offscreenPageLimit = 1
Или эквивалент в Java. Это может помочь, потому что оно отключает некоторые действия ресайклера. Буду рад, если кто-нибудь объяснит это лучше. Столкнулся с той же проблемой и решил ее с помощью этой.