I have created a Bottom Navigation View. It works fine except that when I use addToBackStack(null)
in handling the fragments, I have fragments [A] [B] [C] and [D], clicking on the back key cycles through all fragments in the backStack. This I don't want. I only want the fragment [A] returned whenever I press the back key.
If I remove addToBackStack(null)
, pressing the back key closes the fragment.
I have tried many solutions but am not getting things right. Please I will need assistance. My code is written below;
BottomNavigationView bottomNavigationView = findViewById(R.id.bottom_nav_view);
bottomNavigationView.setOnNavigationItemSelectedListener(AtomsNavListener);
//Keep home fragment selected
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container, new HomeFragment()).commit();
}
private BottomNavigationView.OnNavigationItemSelectedListener AtomsNavListener = new
BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
Fragment selectedFragment = null;
switch (menuItem.getItemId()) {
case R.id.bottom_home:
selectedFragment = new HomeFragment();
break;
case R.id.bottom_book_appointment:
selectedFragment = new ConnectADocFragment();
break;
case R.id.bottom_history:
selectedFragment = new AppointmentHistoryFragment();
break;
case R.id.bottom_profile:
selectedFragment = new ProfileFragment();
break;
}
navigateToFragment(selectedFragment);
return true;
}
};
private void navigateToFragment(Fragment selectedFragment) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container, selectedFragment)
.addToBackStack(null)
.commit();
}