【问题标题】:Compose TextField clears value on gaining focusCompose TextField 清除获得焦点的价值
【发布时间】:2021-08-24 07:20:47
【问题描述】:

我有一个可组合函数,它显示 2 个TextFields。这是我的代码:

fun CreateEntryItem() {

    var wordA by remember { mutableStateOf("") }
    var wordB by remember { mutableStateOf("") }

    Column {
        Row {
            TextField(
                value = wordA,
                onValueChange = { wordA = it },
                enabled = true,
                modifier = Modifier.weight(1f)
            )
            TextField(
                value = wordB,
                onValueChange = { wordB = it },
                enabled = true,
                modifier = Modifier.weight(1f)
            )
        }
    }
}

当我将焦点放在 TextField A 上时,我可以输入并且wordA 的值会正确更新。

这是奇怪的行为:

然后我将焦点放在 TextField B。然后我将焦点返回到 TextField A。当我开始输入时,不是 TextField A 在现有文本的光标位置插入/附加字符,而是完全清除现有文本(如设置预对焦),并“重新开始”。也就是说,每个TextField只记住在当前“焦点会话”中输入的文本。

我做错了吗?或者这是 Compose 中的错误?我在1.0.0-beta071.0.0-beta08 上都重现了这种行为。

【问题讨论】:

  • 无法在 1.0.0-beta08 上重现我猜需要更多细节
  • 这是一个大错误 :)

标签: android android-layout user-interface android-jetpack android-jetpack-compose


【解决方案1】:

事实证明,这本身不是 Compose 错误,而是模拟器问题。在真实设备上运行完全相同的代码不会遇到这个问题。

遇到此问题的模拟器是在 macOS Big Sur 上运行的 API 30。我没有测试过其他系统是否也受到这个模拟器错误的影响。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    • 2023-03-20
    • 2023-01-16
    • 2014-01-17
    • 2022-06-15
    • 2018-02-27
    相关资源
    最近更新 更多