You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jetpack Compose TextField获得焦点输入时清空原有值问题咨询

你遇到的这个问题是Jetpack Compose 1.0.0-beta07、1.0.0-beta08两个版本的官方原生bug,和你的代码实现逻辑无关。


问题原因

该版本中TextField的状态同步逻辑与焦点回调逻辑存在耦合错误,当同层级多个TextField使用weight修饰符分配宽度时,切换焦点会错误触发输入内容重置逻辑,导致前一个焦点会话内输入的内容被清空。

修复方案

方案1(推荐)

升级Jetpack Compose版本到1.0.0-rc01及以上,官方已经在后续版本中修复了该bug,升级后无需修改原有代码即可正常运行。

方案2(临时规避,不升级版本可用)

两种实现二选一即可:

  • 将状态声明的remember替换为rememberSaveable,持久化输入状态避免被错误重置:
var wordA by rememberSaveable { mutableStateOf("") }
var wordB by rememberSaveable { mutableStateOf("") }
  • 给每个TextField添加唯一的key标识,强制Compose区分不同输入框的状态节点:
TextField(
    value = wordA,
    onValueChange = { wordA = it },
    enabled = true,
    modifier = Modifier.weight(1f).key("text_field_a")
)
TextField(
    value = wordB,
    onValueChange = { wordB = it },
    enabled = true,
    modifier = Modifier.weight(1f).key("text_field_b")
)

内容的提问来源于stack exchange,提问作者Luke Needham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 02:54:08