Textfield с Animatedvisibility должна показывать клавиатуру (requestFocus)Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Textfield с Animatedvisibility должна показывать клавиатуру (requestFocus)

Сообщение Anonymous »

У меня есть текстовое поле, которое отображается, когда пользователь нажимает на кнопку поиска, и видимость анимирована. Проблема заключается в том, что когда я прошу фокус, чтобы показать клавиатуру, композиция не закончена, поэтому FocusRequester не была инициализирована, вызывая сбой. Одним из возможных решений было бы добавить задержку с таким же количеством времени, что и анимация, но это не безопасно, так как может быть гоночное состояние, а авария произошла в редких случаях. Любая другая альтернатива? < /P>
@Composable
fun MyComponent() {
var expanded by rememberSaveable { mutableStateOf(false) }
val focusRequester = remember { FocusRequester() }

AnimatedVisibility(
visible = expanded,
enter = expandHorizontally(animationSpec = tween(300)) + fadeIn(),
exit = shrinkHorizontally(animationSpec = tween(300)) + fadeOut()
) {
TextField(
modifier = Modifier.focusRequester(focusRequester),
...)

}

IconButton(onClick = {
expanded = !expanded
focusRequester.requestFocus()
}) {
MyImage(
icon = R.drawable.ic_search,
modifier = Modifier.size(56.dp)
)
}

}
< /code>
java.lang.IllegalStateException:

FocusRequester is not initialized. Here are some possible fixes:
1. Remember the FocusRequester: val focusRequester = remember { FocusRequester() }
2. Did you forget to add a Modifier.focusRequester() ?
3. Are you attempting to request focus during composition? Focus requests should be made in response to some event. Eg Modifier.clickable { focusRequester.requestFocus() }


Подробнее здесь: https://stackoverflow.com/questions/797 ... questfocus
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»