JetpackCompose — «LocalFocusManager.current.moveFocus()» не работает в диалоговом окне
Я пытаюсь создать макет диалога с двумя текстовыми полями. При этом я пытаюсь внедрить функцию, согласно которой, когда пользователь заполняет верхнее поле ввода, он будет переходить к следующему полю ввода, нажав клавишу «Далее». Однако это не работает.
Кроме того, я узнал, что это работало, если не в Диалоге.
Вот мой код:
@Composable
fun TestDialog(
openDialog: MutableState<Boolean>
) {
val focusManager = LocalFocusManager.current
val field1 = remember { mutableStateOf("") }
val field2 = remember { mutableStateOf("") }
Dialog(
onDismissRequest = { openDialog.value = false }
) {
Surface(
shape = MaterialTheme.shapes.medium,
color = MaterialTheme.colors.surface,
) {
Box(
modifier = Modifier.padding(
vertical = 16.dp,
horizontal = 16.dp
),
contentAlignment = Alignment.Center
) {
Column {
Text("Title")
Spacer(Spacer)
Text(
text = "message",
modifier = Modifier
.padding(bottom = 14.dp)
.alpha(ContentAlpha.medium),
style = MaterialTheme.typography.body2
)
OutlinedTextField(
modifier = Modifier.fillMaxWidth(),
value = field1.value,
onValueChange = { field1.value = it },
label = { Text("Label1") },
singleLine = true,
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Next),
keyboardActions = KeyboardActions(
onNext = {
//it doesn't work.
focusManager.moveFocus(FocusDirection.Down)
}
)
)
Spacer(Spacer)
OutlinedTextField(
modifier = Modifier
.fillMaxWidth()
.fillMaxHeight(0.8f),
value = field2.value,
onValueChange = { field2.value = it },
label = { Text("Label2") }
)
Row(
modifier = Modifier.align(Alignment.End),
horizontalArrangement = Arrangement.spacedBy(10.dp)
) {
TextButton(onClick = { openDialog.value = false }) {
Text("CANCEL")
}
TextButton(onClick = { }) {
Text("OK")
}
}
}
}
}
}
}