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
目前这两个片段的下一个视图都是空白的。
至少,它不会崩溃。
我有一个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
目前这两个片段的下一个视图都是空白的。 至少,它不会崩溃。