Android Jetpack Compose(1.0.0-beta07):TextField - 无法使用提供的参数调用以下任何函数

16
我开始使用Jetpack Compose(1.0.0-beta07)并遇到了一个非常奇怪的问题,与TextField有关。根据所有可能的文档和说明,我做得都对,但Android Studio不断向我写入消息:None of the following functions can be called with the arguments supplied.,针对TextField。下面是我的编码,在Studio中仍然会下划线标记Text (label)text = it,但我认为它在定义TextField时出现问题。当我用"text"替换remember {mutableStateOf ("text")}时,问题就消失了,但输入键盘时TextField没有改变文本。
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material.*
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.text.input.KeyboardType

@Composable
fun SimpleTextField(label: String = "Label", key: String = "unknown", keyboardType: KeyboardType = KeyboardType.Text){
    var text = remember {
        mutableStateOf("text")
    }

    TextField(
        value = text,
        onValueChange = {
            text = it
        },
        label = { Text(label) },
        keyboardOptions = KeyboardOptions(keyboardType = keyboardType)
    )
}

错误图像

2个回答

4

您可以使用:

var text = remember { mutableStateOf("text") }

TextField(
    value = text.value,
    onValueChange = {
        text.value = it
    },
    label = { Text(label) },
    keyboardOptions = KeyboardOptions(keyboardType = keyboardType)
)

或:
var text by remember { mutableStateOf("text") }

TextField(
    value = text,
    onValueChange = {
        text = it
    },
    label = { Text(label) },
    keyboardOptions = KeyboardOptions(keyboardType = keyboardType)
)

你可以在官方文档中了解更多关于委托属性的信息。

这个解决方案正是我所寻找的。 - Honza Rössler
1
很遗憾,错误仍然存在: var text by remember { mutableStateOf("Text") }TextField( modifier = Modifier.fillMaxWidth(), value = text, onValueChange = { value -> text = value }, label = Text("标签"), keyboardType = KeyboardType.Text ) - rocknow
Compose 1.0.0-rc02 - rocknow
1
2023年了,这仍然是一个已知问题。有解决方法吗? - IgorGanapolsky

0

尝试检查一些参数,例如颜色在最新版本中使用material3,因此需要根据该参数进行设置。

在我的情况下,这行代码导致了字段错误。

    colors = MaterialTheme.color scheme.background

所以我用下面的替换它

    colors = TextFieldDefaults.outlinedTextFieldColors(),

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接