如何从 Activity 获取结果到 Fragment With Navigation Component?
How to get a result from Activity to Fragment With Navigation Component?
我有 MainActivity
、ProductListFragment
和 ProductDetailActivity
。
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
。然后就可以使用OnBackPressedDispatcher在ProductListFragment
和DetailFragment
之间进行通信了
如果你想启动一个 Activity 并从那个 Activity 接收一个结果,你应该使用 Activity Result APIs.
这是唯一正确的 API 可用于此特定情况 - Activity 结果 API 周围没有特定于导航的包装器。
我有 MainActivity
、ProductListFragment
和 ProductDetailActivity
。
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
。然后就可以使用OnBackPressedDispatcher在ProductListFragment
和DetailFragment
如果你想启动一个 Activity 并从那个 Activity 接收一个结果,你应该使用 Activity Result APIs.
这是唯一正确的 API 可用于此特定情况 - Activity 结果 API 周围没有特定于导航的包装器。