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 МБ.

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