Android Jetpack Compose:TextField - 无法使用提供的参数调用任何函数

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

我在 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
,然后却显示出红色
)
,我看不懂。 我无法添加图片,所以我将应该红色的字符标记为粗体:

以下函数均不能使用提供的参数进行调用。

  • TextField(TextFieldValue, (TextFieldValue) → 单位, 修饰符 = ..., 布尔值 = ..., 布尔值 = ..., TextStyle = ..., (() → 单位)? = ... , (() → 单位)? = ..., (() → 单位)? = ..., (() → 单位) = ..., (() → 单位) = ..., ( () → 单位)? = ..., (() → 单位) = ..., 布尔值 = ..., 视觉变换 = ..., 键盘选项 = ..., 键盘操作 = ..., 布尔值 = 。 ..、Int = ...、Int = ...、MutableInteractionSource = ...、Shape = ...、TextFieldColors = ...) 在 androidx.h 中定义。撰写。材质3
  • TextField(字符串, (字符串) → 单位, 修饰符 = ..., 布尔值 = ..., 布尔值 = ..., TextStyle = ..., (() → 单位)? = ..., (() → 单位)? = ..., (() → 单位) = ..., (() → 单位) = ..., (() → 单位) = ..., (() → 单位) )? = ..., (() → 单位) = ..., 布尔值 = ..., 视觉变换 = ..., 键盘选项 = ..., 键盘操作 = ..., 布尔值 = ..., Int = ..., Int = ..., MutableInteractionSource = ..., Shape = ..., TextFieldColors = ...) 在 androidx.h 中定义。撰写。材质

是否有解决类似问题的特定方法?

android android-jetpack-compose mobile-development
1个回答
0
投票
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 之后的

{}
,文本字段不确定您试图传递的参数是什么,这就是为什么它强调整个事情

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