Я создал вид снизу навигации. Он работает нормально, за исключением того, что когда я использую addToBackStack(null)
при обработке фрагментов, у меня есть фрагменты [A] [B] [C] и [D], щелкая по клавише возврата, циклически перебирая все фрагменты в backStack. Это я не хочу. Я только хочу, чтобы фрагмент [A] возвращался всякий раз, когда я нажимаю клавишу возврата.
Если я удаляю addToBackStack(null)
, нажатие клавиши возврата закрывает фрагмент.
Я пробовал много решений, но не все получается правильно. Пожалуйста, мне понадобится помощь. Мой код написан ниже;
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();
}