RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1583473
Accepted
Sirop4ik
Sirop4ik
Asked:2024-06-11 00:58:09 +0000 UTC2024-06-11 00:58:09 +0000 UTC 2024-06-11 00:58:09 +0000 UTC

为什么会出现CompletionHandlerException?

  • 772

有Column一个按钮列表,您需要要求将焦点放在列表中的第一个按钮上,我是这样做的

...
               var modifier: Modifier = Modifier
                   .height(96.toDpWithOffset)
                   .width(520.toDpWithOffset)


               if (idx == 0) {
                   modifier = modifier.focusRequester(focusRequester)
               }

               Button(modifier = modifier...
...

也就是说,如果这是第一个按钮,则添加focusRequester到modifier

问题是这样的:视觉上它可以像这样缩短

...
                Button(
                    modifier = Modifier
                        .height(96.toDpWithOffset)
                        .width(520.toDpWithOffset)
                        .apply {
                            if (idx == 0) {
                                this.focusRequester(focusRequester)
                            }
                        }
...

但由于某种原因它会引发错误

Process: ca.bellmedia.cravetv.debug, PID: 27984
                 kotlinx.coroutines.CompletionHandlerException: Exception in completion handler InvokeOnCompletion@b5280d2[job@9cd05a3] for StandaloneCoroutine{Completed}@9cd05a3
                    at kotlinx.coroutines.JobSupport.completeStateFinalization(JobSupport.kt:322)
                    at kotlinx.coroutines.JobSupport.tryFinalizeSimpleState(JobSupport.kt:297)
                    at kotlinx.coroutines.JobSupport.tryMakeCompleting(JobSupport.kt:860)
                    at kotlinx.coroutines.JobSupport.makeCompletingOnce$kotlinx_coroutines_core(JobSupport.kt:832)
                    at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:100)
                    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
                    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
                    at androidx.compose.ui.platform.AndroidUiDispatcher.performTrampolineDispatch(AndroidUiDispatcher.android.kt:81)
                    at androidx.compose.ui.platform.AndroidUiDispatcher.access$performTrampolineDispatch(AndroidUiDispatcher.android.kt:41)
                    at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.run(AndroidUiDispatcher.android.kt:57)
                    at android.os.Handler.handleCallback(Handler.java:958)
                    at android.os.Handler.dispatchMessage(Handler.java:99)
                    at android.os.Looper.loopOnce(Looper.java:205)
                    at android.os.Looper.loop(Looper.java:294)
                    at android.app.ActivityThread.main(ActivityThread.java:8177)
                    at java.lang.reflect.Method.invoke(Native Method)
                    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
                    Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [androidx.compose.ui.platform.MotionDurationScaleImpl@99dc6cc, androidx.compose.runtime.BroadcastFrameClock@887fd15, StandaloneCoroutine{Completed}@9cd05a3, AndroidUiDispatcher@441582a]
                 Caused by: java.lang.IllegalStateException: 
                    FocusRequester is not initialized. Here are some possible fixes:
                 
                    1. Remember the FocusRequester: val focusRequester = remember { FocusRequester() }
                    2. Did you forget to add a Modifier.focusRequester() ?
                    3. Are you attempting to request focus during composition? Focus requests should be made in
                    response to some event. Eg Modifier.clickable { focusRequester.requestFocus() }

我在这里缺少什么?

android
  • 1 1 个回答
  • 32 Views

1 个回答

  • Voted
  1. Best Answer
    Wlad
    2024-06-12T15:45:44Z2024-06-12T15:45:44Z

    尝试按如下方式重现您的代码

    @Composable
    fun Test(
        rnd: Int
    ) {
        val focusRequest = remember { FocusRequester() }
        LaunchedEffect(rnd) {
            focusRequest.requestFocus()
        }
        Column {
            (0..3).forEach {i->
                TextField(
                    modifier = Modifier
                        .let {
                            if (rnd == i) {
                                it.focusRequester(focusRequest)
                            } else it
                        },
                    value = "${i}",
                    onValueChange = {}
                )
            }
        }
    }
    

    他工作。但如果你let用它替换它apply,它会崩溃并出现与你相同的错误。
    顺便说一句,这就是错误所说的
    2. Did you forget to add a Modifier.focusRequester() ?

    原因:所有方法Modifier'а都返回一个新对象,而不是向现有对象添加一些内容。使用let或任何其他方法会给你返回一个新的Modifier

    • 1

相关问题

  • 来自片段的列表落后于 BottomNavigationView

  • 无法将变量从 Activity 传递到 Fragment

  • 构建与完成的片段略有不同的片段的最佳方法是什么?

  • 如何更改来自服务器的响应中的日期格式?

  • 谷歌地图在应用程序的发布版本中不起作用

  • 材料设计按钮。单击按钮上的可选区域!

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5