如何从 Activity 获取结果到 Fragment With Navigation Component?

How to get a result from Activity to Fragment With Navigation Component?

我有 MainActivityProductListFragmentProductDetailActivity
ProductListFragment 是起始片段。
当我单击 ProductListFragment 中的列表项时,它会转到 DetailActivity 并执行我在 nav_graph 中设置的操作。

  val action = ProductListFragmentDirections.actionProductListFragmentToProductDetailActivity(productId)
  findNavController().navigate(action)

当我点击向上按钮或按下后退按钮时,DetailActivity 完成()并返回到 ProductListFragment。
在这种情况下,我想在 DetailActivity 完成时获得结果(),例如 ProductListFragment 中的 onActivityResult() 回调。
那么我应该用什么样的方法来得到结果呢???
有什么方法可以通过使用 Navigation 组件或 findNavcontroller 来获得结果吗?

您可以在 Main Activity 中观察 Detail Activity 的响应。

顺便说一句,导航组件专为具有一个主要 activity 和多个片段目的地的应用而设计。因此,在您的情况下,您应该将 DetailActivity 转换为 DetailFragment。然后就可以使用OnBackPressedDispatcherProductListFragmentDetailFragment

之间进行通信了

如果你想启动一个 Activity 并从那个 Activity 接收一个结果,你应该使用 Activity Result APIs.

这是唯一正确的 API 可用于此特定情况 - Activity 结果 API 周围没有特定于导航的包装器。