我们如何在Navigation组件中指定替换或添加片段?
NavHostFragment.findNavController(this).navigate(R.id.action_splashFragment_to_categoriesFragment)
答案 0 :(得分:0)
Jetpack导航组件目前支持替换片段。
不支持添加片段。
当按下后退按钮时将api数据保留在片段中的解决方法是将数据(片段viewstate)保存在ViewModel中并在onViewCreated()中进行检查,或者使用“全屏DialogFragments”。对于对话框片段,请检查此https://gist.github.com/utkukutlu/bd2e37253e7184179d923321e3ea72c1
答案 1 :(得分:-1)
如果您仅使用findNavController().navigate(R.id.someDestinationId)
,则等于fragmentManager.add
,但是如果您想要替换行为,并且您不希望用户能够按下并重新加载上一个活动,则应该执行像这样:
findNavController().navigate(R.id.homeFragment, null, NavOptions.Builder()
.setPopUpTo(R.id.loginFragment, true)
.build())
在这种情况下,我位于 LoginFragment 中,并且我想导航到 HomeFragment ,并且我也想替换当前的片段,以使用户无法按下并再次加载 LoginFragment