在尝试使用导航组件之前,我习惯于手动执行片段事务,并使用片段标记来获取当前片段。
现在,在我的主活动布局中,我有如下内容:
如何通过导航组件检索当前显示的片段?做什么
返回一个
我想找回我展示的'MyFragment`。
谢谢你。
发布于 2018-08-08 01:29:33
我现在设法找到了一种方法,它是这样的:
NavHostFragment navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host);
navHostFragment.getChildFragmentManager().getFragments().get(0);
当然,如果你知道它是第一个片段。我仍然在研究一种没有这个的方法。我同意这不是最好的方式,但这应该是目前的一些东西。
发布于 2018-07-29 02:25:55
我无法找到检索当前片段实例的方法。但是,您可以使用以下代码获取最后添加的片段的ID。
navController.currentDestination?.getId()
它返回导航文件中的ID。希望这能有所帮助。
发布于 2018-11-20 23:52:46
您应该查看nav片段的childFragmentManager primaryNavigationFragment属性,这是引用当前显示的片段的位置。
val navHost = supportFragmentManager.findFragmentById(R.id.main_nav_fragment)
navHost?.let { navFragment ->
navFragment.childFragmentManager.primaryNavigationFragment?.let {fragment->
//DO YOUR STUFF
}
}
}
https://stackoverflow.com/questions/51385067
复制相似问题