导航组件在 onActivityResult 内导航不起作用
Posted
技术标签:
【中文标题】导航组件在 onActivityResult 内导航不起作用【英文标题】:Navigation component navigate inside a onActivityResult not working 【发布时间】:2020-06-23 15:56:21 【问题描述】:我正在使用 navController.navigate(R.id.FragmentB) 从 MainActivity 中的主机片段导航以导航到不同的片段,它的工作方式与预期一样,除了在 onActivityResult 内部它不会响应,我从其他活动返回一个 ID,并希望根据该 ID 导航到片段,但它没有响应,
【问题讨论】:
【参考方案1】:事实证明,我需要创建一个协程并在其上运行我的导航功能,我尝试过:
GlobalScope.launch(Dispatchers.Main)
navigate()
它工作正常,显然需要优化我的协程,但这是主要问题
【讨论】:
在内部听起来像是handler.post
。
你能解释更多吗?
通过调用将在 Main 调度程序中运行的协程,它在内部调用 Handler.post
,这意味着 onActivityResult -> onStart -> onResume 在您的代码之前运行。如果您直接在 onActivityResult 中执行此操作,则 onStart 尚未运行,NavController 表示其状态已恢复,并且它忽略您的导航调用。【参考方案2】:
如果您不使用协程,一个简单的Handler()
就可以解决问题。
Handler().post
navigate()
【讨论】:
以上是关于导航组件在 onActivityResult 内导航不起作用的主要内容,如果未能解决你的问题,请参考以下文章
片段 onActivityResult 方法执行调用活动 onActivityResult
onActivityResult() 在 Android 上不起作用