Android导航组件中的目标链接

时间:2019-02-09 09:46:56

标签: android android-architecture-navigation

我有一个简单的导航图,像这样:

MainFragment -> ListFragment -> DetailFragment

如何实现从MainFragment到DetailFragment的“快捷方式”,所以:

  • DetailFragment中的UP导航将导航到图形中的ListFragment,并且
  • 从DetailFragment返回的导航将返回到MainFragment(可选,BACK可以表现为UP)

这可能吗?感谢您的建议!

编辑:我的解决方案

我可以简单地先导航到ListFragment,然后立即导航到DetailFragment,就像这样(我从MainFragment调用了两个“导航”调用):

findNavController().navigate(MainFragmentDirections.toListFragment())
findNavController().navigate(ListFragmentDirections.toDetailFragment(data))

根据documentation的说法,即“ ...“向上”按钮的功能应与系统的“后退”按钮相同”,我决定不对“后退”和“向上”动作进行区别。

1 个答案:

答案 0 :(得分:1)

要使用导航组件遍历片段,应将其链接到导航图中,请转到app-> res-> navigation-> graphName.xml (在图片中,我使用占位符,而使用片段)。

您可以在documentation中看到从一个片段导航到另一个片段,您需要使用此行Navigation.findNavController(view).navigate(R.id.viewTransactionsAction); viewTransactionsAction应该是从一个片段到下一个片段的箭头ID(在图中)。

enter image description here

要覆盖后退按钮,请使用:

@Override public boolean onSupportNavigateUp() { return Navigation.findNavController(this, R.id.nav_host_fragment).navigateUp(); }

然后在导航nav_host_fragment内替换为要导航到的页面的箭头ID。