JetPack Compose TextField State не обновляет пользовательский интерфейс при наборахAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 JetPack Compose TextField State не обновляет пользовательский интерфейс при наборах

Сообщение Anonymous »

Я работаю над экраном JetPack Compose, где пользователи вводят заголовок в текстовом поле, и кнопка включена только тогда, когда заголовок не пуст. Проблема заключается в том, что, хотя обновления состояния заголовка (как подтверждено LogCat), пользовательский интерфейс не отражает изменения - текст в текстовом поле не отображается, и кнопка остается отключенной. < /P>
@Composable
fun TitleScreen(
modifier: Modifier = Modifier,
navigateToInitial: () -> Unit,
navigateToHelp: () -> Unit,
navigateToUpload: (Uri, String) -> Unit,
fileUri: Uri
) {
var title by rememberSaveable { mutableStateOf("") }

Column(
modifier = modifier
.fillMaxSize()
.background(White)
.verticalScroll(rememberScrollState()),
horizontalAlignment = Alignment.CenterHorizontally
) {
TextField(
value = title,
onValueChange = {
title = it
Log.d("TitleScreen", "New title: $title") // Log shows correct updates
},
label = { Text("Title") },
modifier = Modifier
.fillMaxWidth()
.height(56.dp)
.padding(bottom = 16.dp, start = 16.dp, end = 16.dp)
.clip(CircleShape),
colors = TextFieldDefaults.colors(
unfocusedContainerColor = TextFieldColor,
focusedContainerColor = TextFieldColor,
focusedTextColor = DarkBlack,
unfocusedTextColor = DarkBlack,
focusedIndicatorColor = Color.Transparent,
unfocusedIndicatorColor = Color.Transparent
),
maxLines = 1
)

Button(
onClick = { navigateToUpload(fileUri, title) },
colors = buttonColors(containerColor = Blue, disabledContainerColor = LightGray),
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 16.dp, vertical = 24.dp)
.height(50.dp),
enabled = title.isNotBlank() // Button remains disabled
) {
Text(text = "Next", fontSize = 25.sp, color = White, fontWeight = FontWeight.Bold)
}
}
}
< /code>
Попытки отладки: < /p>
  • Проверено logcat - правильно обновления состояния заголовка. < /li>
    < li> заменен вспоминать, что можно вспомнить - без эффекта. < /li>
    Используется BasicTexfield вместо Textfield - все еще нет обновления пользовательского интерфейса. - Текст обновляется правильно, но Textfield остается пустым. < /Li>
    Используется LaunchEeffect (title) {log.d ("titleScreen", title)} - показывает обновления, но пользовательский интерфейс не меняется.
Почему Textfield не обновляется с новым значением заголовка, и почему кнопка остается отключенной, даже если заголовок обновляется в штате?

Подробнее здесь: https://stackoverflow.com/questions/794 ... hen-typing
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Jetpack Compose - TextField не обновляет сфокусированные/несфокусированные цвета SupportingText
    Гость » » в форуме Android
    0 Ответы
    67 Просмотры
    Последнее сообщение Гость
  • Java.lang.IllegalStateException при использовании State в Android Jetpack Compose
    Anonymous » » в форуме Android
    0 Ответы
    32 Просмотры
    Последнее сообщение Anonymous
  • Как обновить JetPack Compose Slider State за пределами слайдера
    Anonymous » » в форуме Android
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Мой пользовательский интерфейс не будет обновляться при использовании свойства класса в Jetpack Compose.
    Anonymous » » в форуме Android
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • SwiftUI .onAppear не обновляет переменную @State возвращаемым значением
    Anonymous » » в форуме IOS
    0 Ответы
    47 Просмотры
    Последнее сообщение Anonymous

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