片段内有片段的 BottomNavigationView

BottomNavigationView with Fragment inside Fragment

我在理解 Android 中的片段时遇到了一些问题。

我的MainActivity的底部导航有三个项目:FragmentAFragmentBFragmentC

FragmentC 有一个按钮。当用户单击该按钮时,另一个 FragmentD 应该显示附加信息。

在我的按钮的 onClick 中,我尝试使用这个

FragmentManager manager = requireActivity().getSupportFragmentManager();
                FragmentTransaction transaction = manager.beginTransaction();
                transaction.replace(R.id.nav_host_fragment, new FragmentD());
                transaction.addToBackStack(null);
                transaction.commit();

其中 nav_host_fragment 是我的 MainActivity 底部导航项的片段容器。

解决方案是使用 Navigation 而不是 FragmentTransaction。

在导航 xml 文件中,我添加了 FragmentD 和一个以 FragmentD 作为目标的 FragmentC 操作。在按钮的 onClick 中,我现在调用 Navigation.findNavController(view).navigate(R.id.fragment_c_to_fragment_d);

为了使按钮起作用,我必须重写 onSupportNavigateUp:

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