导航组件在 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

onActivityResult() 在 Android 上不起作用

如何在 onActivityResult 中调用 startActivityForResult?

OnActivityResult 没有被调用

关于片段生命周期,何时调用片段的 onActivityResult?