我有一个活动显示如下
碎片
代码简而言之,一个活动中有两个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视图都是空白的。至少,它不会坍塌。