我正在开发一个应用程序,其中我在Home上使用底部导航,在第二个片段上有三个片段,称为Post Ad我有一个按钮,称为enter fragment zone,通过该按钮,我现在进入另一个片段。现在,当我进入另一个片段时,我不希望在那里显示底部导航,因此为了隐藏它,我在我的主Activity中使用了一个方法,称为**”setBottomNavigationVisibility”**我在这里编写代码来设置底部导航的可见性。但问题是,它在mainactivty的方法中抛出了空指针异常,表示
**“void com.google.android.material.bottomnavigation.BottomNavigationView.setVisibility(int)'在空对象引用上”**在我设置可见性的方法行上
主要活动代码
public class MainActivity extends AppCompatActivity {
NavController navController;
BottomNavigationView bottomNavigationView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
navController = Navigation.findNavController(this, R.id.fragmentContainerView);
bottomNavigationView = findViewById(R.id.activity_main_bottom_navigation_view);
NavigationUI.setupWithNavController(bottomNavigationView, navController);
}
public void setBottomNavigationVisibility(int visibility) {
bottomNavigationView.setVisibility(visibility);
}}
在上面的方法中,当我试图设置行**bottomNavigationView.setVisibility(可见性)上的可见性时;**这就是抛出异常的地方
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
binding = FragmentSecondBinding.inflate(inflater, container, false);
// Inflate the layout for this fragment
View view = binding.getRoot();
viewModel = new ViewModelProvider(requireActivity()).get(PageViewModel.class);
((MainActivity) requireActivity()).setBottomNavigationVisibility(View.GONE);
binding.toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Navigation.findNavController(view).navigate(R.id.action_secondFragment2_to_postad);
}
});
否请指导我如何解决此错误。
2条答案
按热度按时间irtuqstp1#
这样做,定义接口
您活动必须实现此接口,
并在您想要隐藏底部导航视图片段中执行以下操作:声明全局变量
ikfrs5lh2#
在要隐藏底部栏片段中,只需在 onViewCreated 中调用此行
且当您离开片段时,在 onDestroy 或 onStop 中调用此行以查看另一个片段底部导航: