google-developer-training / basic-android-kotlin-compose-training-tip-calculator

Apache License 2.0
61 stars 93 forks source link

Intro to state in Compose: Android Basics with Compose #225

Closed gloglo1980 closed 2 months ago

gloglo1980 commented 2 months ago

URL of codelab https://developer.android.com/codelabs/basic-android-kotlin-compose-using-state?continue=https%3A%2F%2Fdeveloper.android.com%2Fcourses%2Fpathways%2Fandroid-basics-compose-unit-2-pathway-3%3F_gl%3D1*dk41jb*_up*MQ..%26gclid%3DCj0KCQjwkdO0BhDxARIsANkNcrdJuLm9cuHNckCwd1q2RiqkwtiFhLWAiKiVGtnwvG8h39Nv9HwGgDkaAh2cEALw_wcB%26gclsrc%3Daw.ds%23codelab-https%3A%2F%2Fdeveloper.android.com%2Fcodelabs%2Fbasic-android-kotlin-compose-using-state#3

In which task and step of the codelab can this issue be found? 3 and 4

Describe the problem the code will no longer compile because of insufficient inputs for TextField (on line 98)

Steps to reproduce? follow the codelab to this point - your code will no longer compile

Versions Android Studio version: Koala API version of the emulator: Pixel 2 API 29

Additional information Include screenshots if they would be useful in clarifying the problem. Pasted below: my code, followed by the build error /*

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.safeDrawingPadding import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.material3.TextField import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.example.tiptime.ui.theme.TipTimeTheme import java.text.NumberFormat

class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { enableEdgeToEdge() super.onCreate(savedInstanceState) setContent { TipTimeTheme { Surface( modifier = Modifier.fillMaxSize(), ) { TipTimeLayout() } } } } }

@Composable fun TipTimeLayout() { Column( modifier = Modifier .statusBarsPadding() .padding(horizontal = 40.dp) .safeDrawingPadding(), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center ) { Text( text = stringResource(R.string.calculate_tip), modifier = Modifier .padding(bottom = 16.dp, top = 40.dp) .align(alignment = Alignment.Start) ) EditNumberField(modifier = Modifier.padding(bottom = 32.dp).fillMaxWidth()) Text( text = stringResource(R.string.tip_amount, "$0.00"), style = MaterialTheme.typography.displaySmall ) Spacer(modifier = Modifier.height(150.dp)) } }

/**

@Composable fun EditNumberField(modifier: Modifier = Modifier) { val amountInput = 0 TextField( value = amountInput, onValueChange = {}, modifier = modifier ) }

@Preview(showBackground = true) @Composable fun TipTimeLayoutPreview() { TipTimeTheme { TipTimeLayout() } }

e: file:///C:/Users/glogl/AndroidStudioProjects/basic-android-kotlin-compose-training-tip-calculator-starter/app/src/main/java/com/example/tiptime/MainActivity.kt:98:5 None of the following functions can be called with the arguments supplied: public fun TextField(value: TextFieldValue, onValueChange: (TextFieldValue) -> Unit, modifier: Modifier = ..., enabled: Boolean = ..., readOnly: Boolean = ..., textStyle: TextStyle = ..., label: (() -> Unit)? = ..., placeholder: (() -> Unit)? = ..., leadingIcon: (() -> Unit)? = ..., trailingIcon: (() -> Unit)? = ..., prefix: (() -> Unit)? = ..., suffix: (() -> Unit)? = ..., supportingText: (() -> Unit)? = ..., isError: Boolean = ..., visualTransformation: VisualTransformation = ..., keyboardOptions: KeyboardOptions = ..., keyboardActions: KeyboardActions = ..., singleLine: Boolean = ..., maxLines: Int = ..., minLines: Int = ..., interactionSource: MutableInteractionSource = ..., shape: Shape = ..., colors: TextFieldColors = ...): Unit defined in androidx.compose.material3 public fun TextField(value: String, onValueChange: (String) -> Unit, modifier: Modifier = ..., enabled: Boolean = ..., readOnly: Boolean = ..., textStyle: TextStyle = ..., label: (() -> Unit)? = ..., placeholder: (() -> Unit)? = ..., leadingIcon: (() -> Unit)? = ..., trailingIcon: (() -> Unit)? = ..., prefix: (() -> Unit)? = ..., suffix: (() -> Unit)? = ..., supportingText: (() -> Unit)? = ..., isError: Boolean = ..., visualTransformation: VisualTransformation = ..., keyboardOptions: KeyboardOptions = ..., keyboardActions: KeyboardActions = ..., singleLine: Boolean = ..., maxLines: Int = ..., minLines: Int = ..., interactionSource: MutableInteractionSource = ..., shape: Shape = ..., colors: TextFieldColors = ...): Unit defined in androidx.compose.material3

gloglo1980 commented 2 months ago

Whoops 🫥 I had my zero as an int rather than a string