Android: 如何从单个按钮到多个片段的导航器?

Android: How to transaction from single button to multiple fragments' navigators?

我有一个activity显示如下

fragments

code

总之,一个activity中有两个fragment,我可以点击一个按钮改变fragmentA,但是不知道如何同时改变fragmentB

如果我使用 fragmentB 的 class 名称,android-studio throw 'com.android.ui.leakagedetector.NormalFragment' 不是封闭的 class' 'com.android.ui.leakagedetector.NormalFragment' is not an enclosing class'

如果我用 NavHostFragment.findNavController(getChildFragmentManager().findFragmentById(R.id.nav_center_fragment_content)).navigate(R.id.action_NormalFragment_to_SettingFragment); 然后运行 app,会崩溃并抛出异常: 尝试在空对象引用上调用虚拟方法 'android.view.View androidx.fragment.app.Fragment.getView()' null object reference

请多多指教

假设你有两个片段,你想在单击单个按钮时切换,那么你可以使用标志进行更改。为此,您需要创建一个 int flag = 0 标志,因此当它为 0 时,您将导航到片段 action_bottom_normal 然后将其更改为 1 。下次导航后您的值为 1,因此您将导航至 action_normal_fragment 并且标志值将像这样为 0。

settingsButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (flag == 0){
                NavHostFragment.findNavController(this).navigate(R.id.action_bottom_normal);
                flag = 1;
            } else {
                NavHostFragment.findNavController(this).navigate(R.id.action_normal_fragment);
                flag = 0;
            }


        }
    });

我想我已经找到了让它发挥作用的方法,

            NavHostFragment.findNavController(BottomNormalFragment.this).navigate(R.id.action_BottomNormalFragment_to_BottomReturnFragment);
            NavHostFragment.findNavController(getActivity().getSupportFragmentManager().findFragmentById(R.id.nav_center_fragment_content)).navigate(R.id.action_NormalFragment_to_SettingFragment);

before click

after click

目前这两个片段的下一个视图都是空白的。 至少,它不会崩溃。