Jetpack Compose-Fehler: Nichtübereinstimmung des Zuweisungstyps: Der tatsächliche Typ ist „Unit“, aber „String“ wurde erAndroid

Forum für diejenigen, die für Android programmieren
Anonymous
 Jetpack Compose-Fehler: Nichtübereinstimmung des Zuweisungstyps: Der tatsächliche Typ ist „Unit“, aber „String“ wurde er

Post by Anonymous »

Ich versuche, einen Click-Handler an eine untergeordnete Funktion zu übergeben, der eine Zeichenfolge an die übergeordnete Funktion zurücksendet und einen veränderlichen Wert basierend auf der Zeichenfolge aktualisiert. Ich erhalte eine Fehlermeldung für die Funktion:
„Zuweisungstyp stimmt nicht überein: Der tatsächliche Typ ist ‚Einheit‘, aber ‚String‘ wurde erwartet.“
Die Funktion gibt nichts zurück, sie aktualisiert nur die ausgewählte Farbe
Code:

Code: Select all

@Composable
fun ColorsSection() {
val colors: List = listOf(
"Red" to Color.Red,
"Pink" to tertiaryContainerLightMediumContrast,
"Orange" to errorContainerDarkMediumContrast,
"Yellow" to Color.Yellow,
"Green" to Color.Green,
"Cyan" to Color.Cyan,
"Blue" to Color.Blue,
"Purple" to tertiaryLight,
"White" to Color.White
)
var selectedColor by remember { mutableStateOf("") }
val onSelectColor: (color: String) -> Unit = { selectedColor = color } // Assignment type mismatch: actual type is 'Unit', but 'String' was expected.

LazyColumn(modifier = Modifier) {
items(items = colors) { color -> SingleColor(
color.first,
selectedColor,
color.second,
onSelectColor
) }
}
}

@Composable
fun SingleColor(
colorName: String,
selectedColor: String,
colorValue: Color,
onSelected: (String) -> Unit
) {
Surface(
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 16.dp, vertical = 8.dp)
.clickable(onClick = { onSelected(colorName) }),
shape = MaterialTheme.shapes.medium,
border = BorderStroke(
1.dp,
if (selectedColor == colorName) MaterialTheme.colorScheme.primary else MaterialTheme.colorScheme.outline
),
color = if (selectedColor == colorName) MaterialTheme.colorScheme.primaryContainer else MaterialTheme.colorScheme.surface
) {
Row(
modifier = Modifier
.fillMaxWidth(),
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.SpaceBetween
) {
Box(
modifier = Modifier
.size(60.dp)
.background(colorValue)
)
Text(
text = colorName,
modifier = Modifier
.weight(1f)
.padding(horizontal = 16.dp),
style = MaterialTheme.typography.headlineSmall,
textAlign = TextAlign.Center
)
RadioButton(
selected = selectedColor == colorName,
modifier = Modifier.padding(8.dp),
onClick = null
)

}
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post