android studio bumblebee Jetpack 撰写文本字段错误

问题描述 投票:0回答:2

我写了一个outlinedTextField,onValueChange中的“it”不能沿着标签文本工作

无法读取,文本也显示错误。

val usernameState = rememberSaveable{ mutableStateOf(TextFieldValue) }

OutlinedTextField(
            value = usernameState.value,
            onValueChange = { usernameState.value = it },
            label = { Text(text = "username")}
        )

这是调用概述文本字段并设置它的错误:

不能使用提供的参数调用以下函数: public fun OutlinedTextField(value: TextFieldValue, onValueChange: (TextFieldValue) -> Unit, 修饰符: Modifier = ..., 启用: Boolean = ..., readOnly: Boolean = ..., textStyle: TextStyle = ..., label : (() -> 单位)? = ..., 占位符: (() -> 单位)? = ..., 前导图标: (() -> 单位) = ..., 尾随图标: (() - > 单位)?= ...,isError:布尔= ...,视觉变换:视觉变换= ...,键盘选项:键盘选项= ...,键盘操作:键盘操作= ...,singleLine:布尔= ...,maxLines :Int = ...,interactionSource:MutableInteractionSource = ...,shape:Shape = ...,颜色:TextFieldColors = ...):在androidx.compose.material中定义的单位 public fun OutlinedTextField(value: String, onValueChange: (String) -> Unit, 修饰符: Modifier = ..., 启用: Boolean = ..., readOnly: Boolean = ..., textStyle: TextStyle = ..., label : (() -> 单位)? = ..., 占位符: (() -> 单位)? = ..., 前导图标: (() -> 单位) = ..., 尾随图标: (() - > 单位)?= ...,isError:布尔= ...,视觉变换:视觉变换= ...,键盘选项:键盘选项= ...,键盘操作:键盘操作= ...,singleLine:布尔= ...,maxLines :Int = ...,interactionSource:MutableInteractionSource = ...,shape:Shape = ...,颜色:TextFieldColors = ...):在androidx.compose.material中定义的单位

android kotlin android-jetpack-compose android-compose-textfield
2个回答
0
投票

您可以使用

remember
as

来完成此操作
val usernameState = remember { mutableStateOf(TextFieldValue) }

OutlinedTextField(
    value = usernameState.value,
    onValueChange = { usernameState.value = it },
    label = { Text(text = "username")}
)

或者您可以使用 Kotlin 委托作为

val username by remember { mutableStateOf(TextFieldValue) }

OutlinedTextField(
    value = username,
    onValueChange = {username = it},
    label = {Text(text = "username")}
)

MutableState 默认没有 getter 和 setter。要使用 Kotlin 委托,您必须导入必要的 getter 和 setter(IDE 建议),它们是 MutableState 的扩展函数


-1
投票

您需要提供

String
作为您在此处使用的签名的值。因此,您传递的值参数应该是
unserNameState.value.value
。第一个值是从
MutableState
中提取状态值,第二个是从
String
中提取
TextFieldValue
。另外,您需要通过添加括号来初始化
TextFieldValue
的构造函数。

我的建议是您采用最简单的方法。

var uns by remeberSaveable{ mutableStateOf("") } // Use 'by' to treat this state as a regular variable

OutlinedTextField(
 value = uns, // As simple as that
 onValueChange = { uns = it },
 label = { Text("User Name") }
)

考虑参加 codelabs 来更好地全面了解 Compose。

到目前为止你在月球上雕刻了什么?

© www.soinside.com 2019 - 2024. All rights reserved.