微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Jetpack Compose 数字输入到 TextField

如何解决Jetpack Compose 数字输入到 TextField

键盘的 KeyboardType 设置为 KeyboardType.Number 时,我目前无法将用户输入捕获到文本字段中。

如果键盘设置为 KeyboardType.Text,文本字段会按预期更新,但是当设置为 KeyboardType.Number 时,文本字段无法更新。

这是为什么?以及如何更改我的代码,以便在单击文本字段时显示数字键盘,并在按下数字时更新文本字段中的相关数字。

以下代码不会更新文本字段(当设置为 KeyboardType.Number 时)...

@Composable
fun MyNumberField() {

    var text = remember { mutableStateOf("")}

    val change : (String) -> Unit = { it ->
        value.value = it
    }

    TextField(
        value = text.value,modifier = Modifier.fillMaxWidth(),keyboardOptions = KeyboardOptions.Default.copy(keyboardType = KeyboardType.Number),onValueChange = change
    )

}

以下代码确实更新了文本字段(当设置为 KeyboardType.Text 时)...

@Composable
fun MyNumberField() {

    var text = remember { mutableStateOf("")}

    val change : (String) -> Unit = { it ->
        text.value = it
    }

    TextField(
        value = value.value,keyboardOptions = KeyboardOptions.Default.copy(keyboardType = KeyboardType.Text),onValueChange = change
    )

}

非常感谢

解决方法

您应该更新 text.value,而不是 value.value,您的代码中有错别字,请将其更改为此。

@Composable
fun MyNumberField() {

    var text = remember { mutableStateOf("")}

    val change : (String) -> Unit = { it ->
        value.value = it    // you have this which is not correct and I don't think it even compiled
        text.value = it  // it is supposed to be this 
    }

    TextField(
        value = text.value,modifier = Modifier.fillMaxWidth(),keyboardOptions = KeyboardOptions.Default.copy(keyboardType = KeyboardType.Number),onValueChange = change
    )

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。