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

从其他页面返回Composable时,如何重新触发focusRequester.requestFocus()?

解决从外部页面返回后BasicTextField不自动弹出键盘的问题

原代码中LaunchedEffect(Unit)仅在Composable首次初始化时执行一次。当你从浏览器返回当前页面时,该Composable并未被销毁重建,因此这个副作用不会再次触发,导致focusRequester.requestFocus()不执行,键盘也就不会自动弹出。

方案一:监听页面生命周期,在恢复时请求焦点

利用repeatOnLifecycle监听页面的RESUMED状态,每次页面从后台回到前台(比如从浏览器返回)时,都会触发焦点请求和键盘弹出逻辑:

@Composable
fun MyBasicTextField() {
    val keyboardController = LocalSoftwareKeyboardController.current
    val focusRequester = remember { FocusRequester() }
    val lifecycleOwner = LocalLifecycleOwner.current

    BasicTextField(
        modifier = Modifier.focusRequester(focusRequester),
        keyboardActions = KeyboardActions(onAny = { keyboardController?.hide() }),
        // 补充BasicTextField必需的value和onValueChange参数
        value = "",
        onValueChange = {}
    )

    LaunchedEffect(lifecycleOwner) {
        lifecycleOwner.repeatOnLifecycle(Lifecycle.State.RESUMED) {
            focusRequester.requestFocus()
            // 手动调用show确保键盘弹出(部分场景下请求焦点后键盘不会自动弹出)
            keyboardController?.show()
        }
    }
}

方案二:结合导航组件监听当前页面状态(使用Jetpack Navigation时)

如果你的页面是通过Jetpack Navigation管理的,可以监听当前返回栈条目,判断页面是否处于活跃状态,再触发焦点请求:

@Composable
fun MyBasicTextField(navController: NavController) {
    val keyboardController = LocalSoftwareKeyboardController.current
    val focusRequester = remember { FocusRequester() }
    val currentBackStackEntry by navController.currentBackStackEntryAsState()
    // 替换为你的页面路由
    val isCurrentScreen = currentBackStackEntry?.destination?.route == "text_field_screen"

    BasicTextField(
        modifier = Modifier.focusRequester(focusRequester),
        keyboardActions = KeyboardActions(onAny = { keyboardController?.hide() }),
        value = "",
        onValueChange = {}
    )

    LaunchedEffect(isCurrentScreen) {
        if (isCurrentScreen) {
            focusRequester.requestFocus()
            keyboardController?.show()
        }
    }
}

内容的提问来源于stack exchange,提问作者Edna Krabappel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 05:35:29