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



我有一个活动显示如下

碎片

代码简而言之,一个活动中有两个fragment,我可以点击一个按钮来改变fragmentA,但我不知道如何同时改变fragmentB。

如果我使用fragmentB的类名,android-studio抛出'com.android.ui.leakagedetector。NormalFragment'不是一个封闭类'"com.android.ui.leakagedetector。NormalFragment'不是一个封闭类'

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

请给我一些建议。

假设您有两个片段,并且您想要切换单个按钮的单击,那么您可以使用flag进行更改。为此,您需要创建一个标志作为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);

点击

之前点击后

现在两个片段的next视图都是空白的。至少,它不会坍塌。

最新更新