kotlin android studio大黄蜂Jetpack编写文本字段错误

nuypyhwy  于 2023-02-16  发布在  Kotlin
关注(0)|答案(2)|浏览(148)

我编写了outlinedTextField,onValueChange中的"it"不适用于标签文本
它无法读取,并且Text也显示错误。

val usernameState = rememberSaveable{ mutableStateOf(TextFieldValue) }

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

调用并设置outlinedTextfield时出错:
不能使用提供的参数调用以下任何函数:公共娱乐大纲文本字段(值:文本字段值,值更改时:(文本字段值)-〉单位,修饰符:修改量=...,启用:布尔值=...,只读:布尔值=...,文本样式:文本样式=...,标签:(()-〉单位)?=...,占位符:(()-〉单位)?=...,前导图标:(()-〉单位)?=...,尾随图标:(()-〉单位)?=...,是错误:布尔值=...,可视化转换:可视化转换=...,键盘选项:键盘选项=...,键盘操作:键盘操作=...,单行:布尔值=...,最大行数:Int =...,相互作用来源:可变交互源=...,形状:形状=...,颜色:文本字段颜色=...):在androidx中定义的单元。compose. material公共娱乐OutlinedTextField(值:字符串,值更改时:(字符串)-〉单位,修改量:修改量=...,启用:布尔值=...,只读:布尔值=...,文本样式:文本样式=...,标签:(()-〉单位)?=...,占位符:(()-〉单位)?=...,前导图标:(()-〉单位)?=...,尾随图标:(()-〉单位)?=...,是错误:布尔值=...,可视化转换:可视化转换=...,键盘选项:键盘选项=...,键盘操作:键盘操作=...,单行:布尔值=...,最大行数:Int =...,相互作用来源:可变交互源=...,形状:形状=...,颜色:文本字段颜色=...):在androidx. compose. material中定义的单位

bbmckpt7

bbmckpt71#

您需要提供一个String作为一个值,并带有您在其中使用的签名。因此,您传递的value参数应该是unserNameState.value.value。第一个值用于从MutableState中提取状态值,第二个值用于从TextFieldValue中提取String。此外,你需要初始化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。
到目前为止你在月球上雕刻了什么?

z9smfwbn

z9smfwbn2#

您可以使用remember作为

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的扩展函数

相关问题