我在 Kotlin 中使用 Jetpack Compose,在处理 TextField 时发现了这个有趣的奇怪问题。 根据文档,我应该只填写两个参数:
value
和onValueChange
。但我的编译器继续警告我同样的信息:None of the following functions can be called with the arguments supplied
。
下面是编译器警告我的代码部分以及导入:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.camera.core.CameraSelector
import androidx.camera.core.Preview
import androidx.camera.lifecycle.ProcessCameraProvider
import androidx.camera.view.PreviewView
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.*
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.*
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.compose.ui.viewinterop.AndroidView
import androidx.compose.ui.window.Dialog
import androidx.core.content.ContextCompat
if(showDialog){
Dialog(onDismissRequest = {showDialog = false}){
var inputText:String by remember{ mutableStateOf("")}
Column(modifier = Modifier.fillMaxSize().padding(16.dp)){
TextField(
value = inputText,
onValueChange = { it:String -> inputText = it},
label = {Text("Age")},
colors = TextFieldDefaults.colors(),
){}
Button(onClick = {
if (inputText.isNotEmpty()) {
dataList.add(inputText)
showDialog = false
}
}){
Text("Submit")
}
}
}
}
有一个类似的问题,于 2021 年提出。但该问题是关于委托财产的。但我的编辑器(Intellij Idea)肯定识别出了我的参数类型,同时提示我缺少一些其他参数。
后来发现它强制我填满
colors
,然后却显示出红色)
,我看不懂。
我无法添加图片,所以我将应该红色的字符标记为粗体:
以下函数均不能使用提供的参数进行调用。
是否有解决类似问题的特定方法?
if(showDialog){
Dialog(onDismissRequest = {showDialog = false}){
var inputText:String by remember{ mutableStateOf("")}
Column(modifier = Modifier.fillMaxSize().padding(16.dp)){
TextField(
value = inputText,
onValueChange = {inputText = it},
label = {Text("Age")},
colors = TextFieldDefaults.colors()
)
Button(onClick = {
if (inputText.isNotEmpty()) {
dataList.add(inputText)
showDialog = false
}
}){
Text("Submit")
}
}
}
}
修复了您的代码,整个问题是您的 TextField 之后的
{}
,文本字段不确定您试图传递的参数是什么,这就是为什么它强调整个事情