Неужели всех устраивает, что TextField теперь требует трёх нажатий кнопки назад вместо двух, чтобы отработать действие назад?
1 нажатие скрывает клавиатуру
2 нажатие убирает фокус с текстового поля
3 нажатие переводит на предыдущий экран бэкстака.
Можно как-то вернуть два нажатия, чтобы не приходилось в каждом текстовом поле добавлять кастомный код?
На случай, если кому-то уже сейчас нужно решение, то вот мой вариант, который вроде как работает и не сильно плохо выглядит. Конечно, было бы лучше, если бы вместо привязки к goBack, можно было создать событие нажатия кнопки, но я хз как это сделать в композе. Но можно и средствами андроида создать такой keyEvent, это не проблема. Тогда вместо вызова goBack можно будет вызвать еще одно событие нажатия кнопки назад программно. TextField(modifier = Modifier.onKeyEvent { event -> if (event.key.keyCode == 17179869184L) { component.goBack()} false }
константа на всех девайсах одинаковая?
if (event.nativeKeyEvent.keyCode == KEYCODE_BACK) {...}
Лучше Key.Back. В common коде тоже есть (спасибо compose-JB)
Лучше юзать Key.Back, чтобы наверняка.
Если не смущает аннотация ExperimentalComposeUiApi
Как раз сейчас добавляю её в список для игнора компилером
Лучше явно давить OptIn'ом, так легче будет найти потом места с использованием ее
Её всегда можно убрать из игнора в рамках модуля и точно так же найти все места при надобности :)
Интересный момент выявил, вроде работает как надо, при первом нажатии скрытие клавиатуры, при втором делает back на предыдущий экран (фрагменты), но после повторного перехода на этот фрагмент, делает back прям с открытой клавиатурой, и такая закономерность ровно через раз
Странно, у меня такого нет. Device-specific, может? Потому что скрытие клавиатуры никогда у не должно обрабатываться как назад
Похоже на то. На pixel2 отрабатывает как надо
Обсуждают сегодня