Page 1 of 1

Jetpack Compose Textfield State nicht aktualisiert die Benutzeroberfläche beim Tippen Aktualisierung

Posted: 06 Feb 2025, 03:25
by Anonymous
Ich arbeite an einem Jetpack -Komponierungsbildschirm, auf dem Benutzer einen Titel in einem Textfeld eingeben, und eine Schaltfläche ist nur aktiviert, wenn der Titel nicht leer ist. Das Problem ist, dass die Benutzeroberfläche, obwohl die Titelstatusaktualisierungen (wie von LogCat bestätigt), die Änderungen nicht widerspiegelt - der Text im Textfeld wird nicht angezeigt und die Schaltfläche bleibt deaktiviert. < /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>
Debugging -Versuche: < /p>
  • Überprüftes logCat - Der Titelstatus aktualisiert korrekt. < /li>
    < li> ersetzt erinnern - Die Textaktualisierungen korrekt, aber das Textfeld bleibt leer.
Warum wird das Textfeld nicht mit dem neuen Wert des Titels aktualisiert und warum bleibt die Schaltfläche deaktiviert, obwohl der Titel im Status aktualisiert wird?