Клавиатура снова открывается после закрытия AlertDialog.Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Клавиатура снова открывается после закрытия AlertDialog.

Сообщение Anonymous »


У меня есть TextField в AlertDialog, и я хочу обрабатывать на нем клавиатуру, но когда я открываю AlertDialog в Compose, клавиатура открывается. но когда я нажимаю кнопку отмены внутри диалогового окна, клавиатура закрывается, но открывается снова. как я могу решить эту проблему?

переопределяет fun onCreateView( надуватель: LayoutInflater, контейнер: ViewGroup?, saveInstanceState: Пакет? ): Вид { return ComposeView(requireContext()).apply { setContent { val viewState с помощью viewModel.state.collectAsState() контроллер val = LocalSoftwareKeyboardController.current val focusRequester = запомнить { FocusRequester() } val focusManager = LocalFocusManager.current val (disputeReason, updateDisputeReason) = помните { mutableStateOf("") } val openDisputeDialog = помните { mutableStateOf (ложь) } LaunchedEffect(key1 = openDisputeDialog.value) { если (!openDisputeDialog.value) { контроллер?.hide() focusManager.clearFocus() } еще { focusRequester.requestFocus() } } Рейтинг var: Плавающее значение по памяти {mutableStateOf(1f)} ComposeMaterial3Theme { если (openDisputeDialog.value) { AlertDialog(onDismissRequest = { openDisputeDialog.value = false }, текст = { Столбец( модификатор = Modifier.fillMaxWidth(), вертикальныйArrangement = Arrangement.spacedBy(16.dp) ) { CustomMultiLineTextField( модификатор = Модификатор .fillMaxWidth() .focusRequester(focusRequester) .heightIn(мин = 140.dp, макс = 300.dp), значение = Причина спора, форма = MaterialTheme.shapes.medium, onValueChange = { updateDisputeReason (оно) } ) } }, кнопки = { Ряд( модификатор = Модификатор .fillMaxWidth() .padding( начало = пространствоСредний, конец = пространствоСредний, дно = пространствоСредний ) ) { ПрозрачнаяКнопка( модификатор = Модификатор .width(spaceFree) .вес(1f) .fillMaxWidth(), toUppercase = ложь, title = stringResource(com.sky.res.R.string.cancel), ) { openDisputeDialog.value = ложь } } }) } PerCaseTabScreen( onOpenDisputeDialog = { selectedReservedCaseToFinish.value = оно updateDisputeReason("") openDisputeDialog.value = true }, состояние = состояние просмотра, ) { } } } } } https://filebin.net/ssjeuwfq2t2d8163
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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